Hallo allerseits ich habe einen Attiny 13 und versuche einen Servo (modelcraft vsd-1) Billigservo von Conrad über einen joystick anzusteuern. Den Joystick habe ich aufgeschraubt und will über die Potis an ADC, dann je nach Position den Servo ansteuern. Ziel ist es in ganz ganz ferner Zukunft ein Modellflugzeug o.Ä. damit zu Steuern aber im Moment ist es mir nur wichtig über EIN Poti EINEN Servo anzusteuern damit wäre ich schonmal gut bedient. Ich bin noch recht neu in der Materie und bin schon diverse Tutorials durchgegangen und hab auch schon viel über Google gefunden aber auch viel Widersprüchliches deswegen die Fragen: 1.Ist das überhaupt mit dem Attiny 13 realisierbar ? (die Ansteuerung muss am Anfang nicht sehr genau sein) 2.Welchen Timer Modus soll ich dazu nehmen ? 3.Kann ich den Poti direkt an ADC anschließen oder muss ich etwas dazwischenklemmen ? dasselbe bei dem Servo, direkt oder etwas dazwischen ? Den Poti würde ich mit an die Versorgungsspannung vom Tiny legen und der Servo würde eine externe Versorgung bekommen. Vielen Dank für eure Hilfe ich hoffe die Ínformationen reichen für den Anfang.
mic schrieb: > 1.Ist das überhaupt mit dem Attiny 13 realisierbar ? (die Ansteuerung > muss am Anfang nicht sehr genau sein) Ja > 2.Welchen Timer Modus soll ich dazu nehmen ? Ein PWM Modus würde sich anbieten > 3.Kann ich den Poti direkt an ADC anschließen oder muss ich etwas > dazwischenklemmen ? nein musst du nicht. Das Poti verschaltest du als Spannungsteiler und die variable Spannung misst du mit dem ADC. Daraus errechnest du dann die Pulslänge für die PWM > dasselbe bei dem Servo, direkt oder etwas dazwischen ? nichts dazwischen > Den Poti würde ich mit an die Versorgungsspannung vom Tiny legen und der > Servo würde eine externe Versorgung bekommen. Gut http://www.mikrocontroller.net/articles/Modellbauservo_Ansteuerung http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29
Ok bin jetz soweit das ich die PWM und den ADC wie ich hoffe richtig eingerichtet habe. Jetz würde ich evtl ein bißchen Hilfe brauche obwohl ich mir alles schon 50 mal glaube ich durchgelesen habe, benötige ich so n bissl Anleitung wäre cool wenn mir jemand beistehen könnte.Was wären jetz meine nächsten schritte ? Wenn ich einmal dahintergekommen bin verstehe ich es dann hoffe ich auch :-)
So wie ich deinen Programmcode bis jetzt sehe, ist die Main-Schleige bei dir momentan noch nicht als Schleife implementiert. Irgendwo solltest du etwa diese Zeilen haben: main: . . . rjmp main; Irgendwie ist mir so, als müssten die Interrupt-Vektoren alle der korrekten Reihenfolge nach angeordnet werden und wie du auch schon teilweise korrekt gemacht hast, am Anfang des Programms stehen. ein Beispiel von mir: .org 0x0000 rjmp RESET ; Reset Handler .org 0x0001 rjmp INT0address ; External Interrupt0 Handler .org 0x0002 rjmp INT1address ; External Interrupt1 Handler .org 0x0005 rjmp TIMER1_OVF .org 0x0006 rjmp TIMER0_OVF .org 0x000E rjmp CompareB RESET: ldi temp1, low(RAMEND) ; Main program start out SPL,temp1 ; Set Stack Pointer to top of RAM Main: rjmp Main; TIMER1_OVF: ########## Timer InterruptRoutine ########## reti; Bei weiteren Fragen helfe Jetzt kannst du in der TimerInterruptroutine beispielsweise eine Variable inkrementieren, die du immer mit verschiedenen PPM-Werten für die Kanäle vergleichst. Bei Erreichen des Vergleichswertes löscht du den entsprechenden PortPin, beim Überlauf der Variable setzt du wiederum alle. Somit kannst du dann Impulslängen unterschiedlicher Länge erzeugen... Alternativ so lange warten, bis die PPM-Impulslänge verstrichen ist und dann den Pin löschen.. Tueftler
Erstmal Danke :-) Ich verstehe das ganze Prinzip eigentlich so: POTI-->ADC(WERT) bei Wert X --> PWM Signal 1,0ms für linksPosition Y --> PWM Signal 1,5ms für Mitte Z --> PWM Signal 2,0ms für Rechts ich komm jetz einfach noch nicht so dahinter wie ich dem Timer sagen soll das er z.B. bei Wert X 1,0ms herrausgeben soll und bei Wert Z z.B. 2,0ms ???
...und liege ich da richtig der Tiny läuft mit 9,6 Mhz mit dem Vorteiler 8 = 1,2 Mhz für 1,0ms wären das dann 1200 Zählerschritte, 1,5ms 1800 und 24000 für 20ms ? oder hab ich da falsch gerechnet ?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.