Stimme ich komplett mit überein. Ich schlage den Tiny24/44/84 vor. Der hat genug IO-Pins auch für unvorhersehbares. Und als MLF gibts den auch. Ob wir jetzt mit dem 24 oder dem 44 anfangen ist wohl erstmal egal. Die sollten vollständig Codekompatibel sein. Wenn man den Prozi eh erst besorgen muß ist sicherlich der Tiny44 die erste Wahl. Ich denke die ersten Gehversuche sollten sowieso mit der DIL-Version gemacht werden (zumindest werde ich so anfangen). Gruß, Martin
da ich selber dabei bin einen Regler zu bauen würde ich gerne mit einsteigen, meine Planung ist aber noch nicht sehr weit da ich den Regler erst im Herbst brauche. Ich will einen Regler für 2 Motoren die entweder als Kettensteuerung oder für einen Allrad-Antrieb gesteuert werden. Zu Kettensteuerung brauch ich ja nix sagen aber doch zur Allrad-Seuerung. Wenn beide Achsen mit einem eigenen Motor aber ohne Diff angetrieben werden schiebt das Fahrzeug stark geradeaus und lässt sich nicht gut lenken. Mein Überlegung ist einfach das dann so zu regeln das der hintere Achse etwas reduziert wird, je nach Servowert zwischen 2% und 8% bei vollem Lenkausschlag.
Als Prozessor habe ich bisher den 2313 ins Auge gefasst und als H-Brücke einen L298.
Zum Einschalten der verschiedenen Modi´s will ich eine Jumper verwenden.
Hi Rick, mit dem 2313 hatte ich auch angefangen, bin dann aber schnell zum Tiny24 gewechselt, da dieser in SMD ein gutes Stück kleiner ist (Breite). Auch weiß ich nicht, ob es den 2313 als MLF gibt. Gruß, Martin
ich habe einfach mal angefangen mit dem Code. Bisher sind aber nur die Definitionen für den Controller, sowie die Ein- und Ausgänge definiert und deklariert.
'****************************************************************************** '* * '* Fahrtregler als Gemeinschaftsprojekt des Mikromodellbau Forums * '* * '* Jeder kann bei diesem Projekt mitmachen. Die einzige Bedingung ist, dass * '* er seine Erfolge auch im Forum veröffentlicht. Wir wollen ja zusammen an * '* diesem Projekt arbeiten. Geplant ist als Controller ein ATTiny 44. * '* * '* Folgende Funktionen sind geplant: * '* * '* - Taktfrequenz 75 Hz * '* - Bremslicht * '* - Rückfahrscheinw. * '* - 2 Eingänge für Endschalte zum Abschalten des Motors * '* - 2,4 GHz Tauglicheit * '* * '* Es ist bestimmt interessant zu sehen, wer hier alles mitgearbeitet hat, * '* Daher könnt Ihr hier Euren Namen eintragen: * '* * '* - Sven Löffler * '* - * '* - * '* - * '* - * '* - * '* * '* Wünsche uns allen viel Erfolg beim Umsetzten des Projektes ! * '* * '******************************************************************************
das sieht ja schon super aus . Habe gerade einmal durch gerechnet, damit wir auf eine PWM Frequenz von 75Hz kommen können. Also laut deinem Source Code wird der Controller ja mit 8000000Hz getaktet. Das heißt, ein Takt dauert so 125ns. Um die Frequenz variabel zu machen, würde ich den 16bit Timer1 verwenden. Da kann man durch das ICR-Register den Topwert selber festlegen und so die spätere Frequenz bestimmen. Die PWM würde ich über die Register OCR1A und OCR1B erzeugen (Non-inverting Mode). Um also eine PWM Frequenz von 75Hz zu erhalten muss folgender Topwert für das ICR-Register errechnet werden:
(1/75Hz)/(1/(8000000Hz/1024)) = 104,16 (Topwert für das ICR-Register)
Ich habe den Wert bewusst so klein gewählt, da zum Auswerten des Servosignals (max. ti=2ms, T=20ms) der Timer0 dann verwendet wird. Mithilfe eines externen Interrupts (INT0 PB2) wird das Signal gemessen. Bei einer steigenden Flanke wird der Timer0 gestartet oder zurück gesetzt. Nun läuft Timer0 und er erhöht bei jedem Overflow einen weiteren Zähler. Dieser wird dann bei einer fallenden Flanke an INT0 ausgelesen. Der Timer0 und der Zähler werden nach dem Auslesen zurückgesetzt. Nun Um möglichst nah an dem Topwert des Timer1 zu liegen, würde ich dort folgende Einstellungen des Timer0 verwenden:
(2*10^-3)/(1/(8000000/256)) = 62,5
Der Timer0 wird da mit einem Vorteiler von 1 getaktet, also direkt mit dem Systemtakt. 2ms für den max. ti entsprechen dann 62,5 Zähler.
Um das ganze jetzt auf das maximale des Timer1 anzupassen muss der Messwert des Servosignals noch mit 1,6 multipliziert werden (104,16/62,5 = 1,6).
So, so viel dazu. Habt Ihr da noch andere Vorschläge zur Servosignalmessung?
Ok, das hört sich interessant an. Dann müsste man die Eingänge nochmal anders belegen. Als Eingang für das PPM Signal habe ich den PA1 gesetzt. Das ist ja das kleinste Problem.
irgendwie fangt´s ihr in der Mitte an Schreibt doch mal eine Art Lastenheft: - Welche Aufgaben muß das Programm erledigen? - Welche interne Resource kann jeweils verwendet werden (z.B. Int, Timer) - dann kommt erst die Pinbelegung. Welche Pins sind z.B. durch Timer fest vorgegeben.
Dann empfehle ich euch einen PAP (ProgrammAblaufPlan) http://friedrich-folkmann.de/papdesigner/Hauptseite.html Darin kann man dann schon schön eintragen, was z.B. in ein Sub ausgelagert werden kann. Irgendwie müßt ihr das auch modular aufbauen, um die Aufgaben untereinander zu verteilen.