Liste der Anhänge anzeigen (Anzahl: 1)
nach dem tausch des MEGA bin ich jetzt auf dem entwicklungsstand vor dem umbau auf die version mit der RAMPS-platine, das fahren mit IR-fernbedienung wie auch mit dem smartphone funktioniert soweit...
Mit der verdrahtung bin ich (fast) zufrieden, die motorzuleitungen muss ich noch ein bischen ordentlicher verlegen, da warte ich aber noch auf die crimpzange aus china...
Anhang 34812
was mir nicht gefält, ist das anfahren der schrittmotoren, ist mir zu rucklig, habe dazu ein kurzes video gedreht. Im ersten part startet der motor rückwärts, direkt, ohne irgendwelchen zusatcode. Da ruckelts wie immer. Nach dem stop starte ich den motor vorwärts, mit einer zusatzbeschleunigung funktion. Da wird ein array eingelesen an der stelle der statischen delays in der ansteurungsroutine für die stepper. Hab vieles über die S-funktion" gelesen, habe die arraytabelle in zwei teile zerlegt, eine für die anfahrt, eine fürs abbremsen. Ob ich die für's abbremsen brauche, weiss ich noch nicht...
Was mir nun noch kopfzerbrechen bereitet ist der ruckler zwischen den anfahrbeschleunigungsroutine (die wäre an sich ok) und dem übergang zur normalen vorwärtsbewegung.
Nun der code, der hauptteil, da sind gleich am anfang auch die arrays fürs anfahren und abbremsen:
Code:
//LCD
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int sinus_rauf [] =
{ 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 7, 9,
10, 11, 12, 14, 15, 16, 18, 20, 21, 23, 25, 27, 29 ,31, 33, 35,
37, 39, 42, 44, 46, 49, 51, 54, 56, 59, 62, 64, 67, 70, 73, 76,
78, 81, 84, 87, 90, 93, 96, 99,102,105,108,111,115,118,121,124,
127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,
176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,
217,219,221,223,225,227,229,231,233,234,236,238,239,240,242,243,
244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,
}; //128
int sinus_runter [] =
{
254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,
244,243,242,240,239,238,236,234,233,231,229,227,225,223,221,219,
217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,
176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,
127,124,121,118,115,111,108,105,102, 99, 96, 93, 90, 87, 84, 81,
78, 76, 73, 70, 67, 64, 62, 59, 56, 54, 51, 49, 46, 44, 42, 39,
37, 35, 33, 31, 29, 27, 25, 23, 21, 20, 18, 16, 15, 14, 12, 11,
10, 9, 7, 6, 5, 5, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0
}; //128
//resett pin definieren
#define PIN2RESET 10
// DIR und STEP pins definieren
#define dirPin_VL 28
#define stepPin_VL 26
#define dirPin_HL 55
#define stepPin_HL 54
#define dirPin_VR 34
#define stepPin_VR 36
#define dirPin_HR 61
#define stepPin_HR 60
//definiere enable pins:
#define enbl_VL 24
#define enbl_HL 38
#define enbl_VR 30
#define enbl_HR 56
//steps pro umdrehung definieren:
#define stepsPerRevolution 200 //1600
uint8_t taste = 0;
uint8_t s_vor = 0;
uint8_t s_rueck = 0;
uint8_t s_links = 0;
uint8_t s_rechts = 0;
uint8_t s_stop = 0;
uint8_t s_parken = 0;
uint16_t step_delay = 2000;
void setup()
{
//LCD
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.setBacklight(HIGH);
lcd.print("outdoor FB switch");
lcd.setCursor(0, 1);
lcd.print("smartphone 1");
delay(2000);
lcd.clear();
//pins als output:
pinMode(dirPin_VL, OUTPUT);
pinMode(stepPin_VL, OUTPUT);
pinMode(enbl_VL, OUTPUT);
pinMode(dirPin_HL, OUTPUT);
pinMode(stepPin_HL, OUTPUT);
pinMode(enbl_HL, OUTPUT);
pinMode(dirPin_VR, OUTPUT);
pinMode(stepPin_VR, OUTPUT);
pinMode(enbl_VR, OUTPUT);
pinMode(dirPin_HR, OUTPUT);
pinMode(stepPin_HR, OUTPUT);
pinMode(enbl_HR, OUTPUT);
// deaktiviere enable pins:
digitalWrite(enbl_VL, HIGH);
digitalWrite(enbl_HL, HIGH);
digitalWrite(enbl_VR, HIGH);
digitalWrite(enbl_HR, HIGH);
Serial1.begin(115200);
Serial.begin(115200);
//resett pin zustand definieren
pinMode(PIN2RESET, INPUT);
//resett pin aktivieren
digitalWrite(PIN2RESET, HIGH);
}
void loop()
{
if (Serial1.available())
{
taste = Serial1.read();
Serial.println(taste);
// taste_neu = taste;
delay(50);
tasten_abfrage();
}
richtung_abfrage();
}
/***********************************************************/
void richtung_abfrage(void)
{
if (s_rechts == 1) rechts_drehen();
if (s_links == 1) links_drehen();
if (s_vor == 1) vorwaerts();
if (s_rueck == 1) rueckwaerts();
if (s_stop == 1) alle_stepper_stop();
if (s_parken == 1) parken();
}
/***********************************************************/
void tasten_abfrage(void)
{
switch (taste)
{
case 116:// fahre vor - FB smartphone "t"
{
// beschleunigen();
vorwaerts();
break;
}
case 115:// fahre rückwärts - FB smartphone "s"
{
rueckwaerts();
break;
}
case 100:// rotate rechts - FB smartphone "d"
{
rechts_drehen();
break;
}
case 97:// rotate links - FB smartphone "a"
{
links_drehen();
break;
}
case 49: //alle stepper stop - FB smartphone "1"
{
alle_stepper_stop();
break;
}
case 51: //parken - FB smartphone "3"
{
parken();
break;
}
}
}
/***********************************************************/
void reboot()
{
pinMode(PIN2RESET, OUTPUT);
digitalWrite(PIN2RESET, LOW);
delay(100);
}
/************************************************************/
hier ist die funktion für vorwärtsfahren:
Code:
void vorwaerts(void)
{
if (s_vor == 0)
{
// enable pins aktivieren:
digitalWrite(enbl_VL, LOW);
digitalWrite(enbl_HL, LOW);
digitalWrite(enbl_VR, LOW);
digitalWrite(enbl_HR, LOW);
//richtung bestimmen
digitalWrite(dirPin_VL, LOW);
digitalWrite(dirPin_HL, LOW);
digitalWrite(dirPin_VR, HIGH);
digitalWrite(dirPin_HR, HIGH);
for (int i = 0; i < 127; i++)
{
digitalWrite(stepPin_VL, HIGH);
digitalWrite(stepPin_HL, HIGH);
digitalWrite(stepPin_VR, HIGH);
digitalWrite(stepPin_HR, HIGH);
delayMicroseconds(1750 + sinus_rauf[i]);
digitalWrite(stepPin_VL, LOW);
digitalWrite(stepPin_HL, LOW);
digitalWrite(stepPin_VR, LOW);
digitalWrite(stepPin_HR, LOW);
delayMicroseconds(1750 + sinus_rauf[i]);
}
digitalWrite(stepPin_VL, HIGH);
digitalWrite(stepPin_HL, HIGH);
digitalWrite(stepPin_VR, HIGH);
digitalWrite(stepPin_HR, HIGH);
delayMicroseconds(step_delay);
digitalWrite(stepPin_VL, LOW);
digitalWrite(stepPin_HL, LOW);
digitalWrite(stepPin_VR, LOW);
digitalWrite(stepPin_HR, LOW);
delayMicroseconds(step_delay);
s_vor = 1;
s_rueck = 0;
s_links = 0;
s_rechts = 0;
s_stop = 0;
s_parken = 0;
}
else
{
digitalWrite(stepPin_VL, HIGH);
digitalWrite(stepPin_HL, HIGH);
digitalWrite(stepPin_VR, HIGH);
digitalWrite(stepPin_HR, HIGH);
delayMicroseconds(step_delay);
digitalWrite(stepPin_VL, LOW);
digitalWrite(stepPin_HL, LOW);
digitalWrite(stepPin_VR, LOW);
digitalWrite(stepPin_HR, LOW);
delayMicroseconds(step_delay);
}
}
wie bekomme ich den ruckler beim vorwärtsfahren weg? Hab schon alles mögliche versucht, bisher leider ohne erfolg :-(
Liste der Anhänge anzeigen (Anzahl: 2)
also viel erfahrung damit habe ich ja nicht:
zuerst hatte ich diese zange:
Anhang 34817
die war insofern ungeeignet, weil das crimpen rein nach gefühl stattfindet - oder ich hab die "automatisierte" crimpfunktion nicht gefunden
die zweite zange:
Anhang 34818
kostet das doppelte der ersten, aber auch nur 15€. Ist nur zum crimpen, hat aber eine "ratsche", die ein halten zwischendurch und das richten der litze zum kontakt möglich macht, das hatte die erste nicht. Man kann - in grenzen - mit einem stellring das mass einstellen auf das die crimpung der reinen kupferlitze stattfinden soll. Ist mir aber auch nicht 100%tig gelungen. Das "vorformen" der lappen der zufgentlastung geht gut. Nacharbeit an der crimpstelle ist aber auch hier notwendig - die quetschung des kupfers etwas nachdrücken, die quetschung der isolierung etwas "richten", damit es besser in die hülse passt. Es ist aber insgesamt einfacher als das löten. Und qualitativ besser...
Liste der Anhänge anzeigen (Anzahl: 2)
beide einwände sind sicher ok, also die gasdichtheit und keine nacharbeit / nachdrücken, allerdings würde ich schon zwischen hobby und professioneller anwendung unterscheiden wollen - allein "gasdicht", nichts für ungut, aber das klingt nach "für die ewigkeit" - ich baue meine roboter für jetzt, da ist eine relativ günstige, schnelle und einigermassen sichere verbindung für mich völlig ausreichend - in ein paar monaten, höchstens jahren sind die rooby's höchstens noch was für die glasvitrine - wenn überhaupt...
EDIT: hab jetzt sowas wie eine glasvitrine :-)
Anhang 34851
auch beim outdoor gehts jetzt weiter, die grösseren räder sind da und auch endlich mit stabilen druckteilen an den steppern befestigt
Anhang 34852
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von
inka
hat gut geklappt:
Anhang 34476
ein drehteller (ich glaub von fondue), 10 minuten drehen und das wars...
Um ein video aufzunehmen hat die dritte hand gefehlt...
hat doch nicht so gut geklappt.... :-(
Schon eine weile habe ich mich gewundert, dass das filament so locker auf der trommel sitzt. Nach ein paar druckabbrüchen, weil das filament offensichtlich nicht weiter transportiert wurde, habe ich mir die trommel genauer angeschaut:
Anhang 34892
ich weiss nicht was zu den brüchen geführt hat, ob die tatsache, dass das filament vom grössten durchmesser der originalspule auf den kleinsten durchmesser der anderen spule gezwängt wurde, oder die qualität des filament selbst. Vielleicht wird das original filament sogar im warmen zustand auf die rollen gewickelt?