ist die fotodiode zwingend erforderlich, d.h. kann ich sie nicht durch ein anderes bauteil ersetzen? ich hab nämlich keine fotodiode zuhause.
Hallo
Heute zeige ich euch mal, wie einfach man einen RC-Servo mit dem asuro steuern kann. Wie üblich sollte am asuro möglichst wenig geändert werden, deshalb habe ich zuerst eine galvanisch getrennte Variante mit eigener Spannungsversorgung gebastelt:
Bild hier Bild hier Bild hier Bild hier
Leider immer noch nicht sehr scharf, aber es gibt auch fast nichts zu sehen.
Benötigte Bauteile:
Fotodiode, 10k-Widerstand, Servo, Akku, etwas Draht, Lötausrüstung und Werkzeug. Werte der Fotodiode in Durchlassrichtung: Hell < 1k, Dunkel > 100k
Aufbau und Schaltungsbeschreibung:
Ein Spannungsteiler mit dem Widerstand an VCC und Fotodiode an 0V erzeugt das PWM-Signal für den Servo. Die Fotodiode wird mit einer beliebigen asuro-LED angestrahlt und überträgt so das PWM-Signal des asuros zum Servo. Funktioniert mit Front-, Status- und BackLEDs:
Bild hier
http://www.youtube.com/watch?v=k_LAmDGj3EU
Hier noch zwei Codes, einmal einfach mit Sleep()-Schleifen:
und einmal etwas anspruchsvoller mit angezapftem Timer-Interrupt:Code:#include "../inc/ir-asuro.h" #include "../inc/ir-asuro.c" unsigned char i, servo_stellzeit; void servo(unsigned char winkel){ unsigned int count=0; do{ count++; BackLED(OFF,OFF); FrontLED(OFF); Sleep(winkel); BackLED(OFF,ON); FrontLED(ON); Sleep(255); Sleep(255); Sleep(255); }while (count<servo_stellzeit); } int main(void) { Init(); StatusLED(OFF); do{ servo_stellzeit=35; servo(51); servo(90); servo(51); servo(15); servo_stellzeit=2; for (i=15; i<88; i+=2) servo(i); for (i=90; i>17; i-=2) servo(i); }while (1); return 0; }
und noch die Änderung der Timerfunktion in der asuro.c:Code:#include "../inc/ir-asuro.h" #include "../inc/ir-asuro.c" unsigned char i; int main(void) { Init(); StatusLED(OFF); do { servo_pos=45; StatusLED(GREEN); Msleep(500); servo_pos=80; StatusLED(RED); Msleep(500); servo_pos=45; StatusLED(GREEN); Msleep(500); servo_pos=15; StatusLED(YELLOW); Msleep(500); }while(1); return 0; }
Das steuerbare Bugrad war nur ein Test, die Schaltung kann deutlich mehr. Sie macht den asuro zu einem flexiblen Kontrollerboard. Mit einem teilweise gehacktem Servo (nur Poti lahmgelegt) sollten sogar echte Motorfunktionen (endlos vor-zurück) möglich sein. Viel Spaß beim Nachbau.Code:#include "ir-asuro.h" volatile unsigned char count36kHz; volatile unsigned long timebase; volatile int autoencode=FALSE; /* Anfang Servoansteuerung I 1.Versuch mit Interrupt 18.4.2007 */ unsigned char servo_pos; unsigned int servo_pwm; /* Ende Servoansteuerung I 1.Versuch mit Interrupt 18.4.2007 */ /* uses timer2 (36kHz for IR communication */ SIGNAL (SIG_OVERFLOW2) { TCNT2 += 0x25; count36kHz ++; if (!count36kHz) timebase ++; /* Anfang Servoansteuerung II 1.Versuch mit Interrupt 18.4.2007 */ if (servo_pos) { servo_pwm++; if (servo_pwm<servo_pos) BackLED(OFF,OFF); else BackLED(OFF,ON); if (servo_pwm>255) servo_pwm=0; } /* Ende Servoansteuerung II 1.Versuch mit Interrupt 18.4.2007 */ }
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
ist die fotodiode zwingend erforderlich, d.h. kann ich sie nicht durch ein anderes bauteil ersetzen? ich hab nämlich keine fotodiode zuhause.
Ja, die ist zwingend nötig. Es könnt zwar auch mit einem Fotowiderstand funktionieren, aber das hilft dir sicher nicht weiter. Quelle für Fotodioden sind z.b. alte Diskettenlaufwerke(5 1/4), Drucker oder auch, hier habe ich meine gefunden, alte Videorecorder.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
^^ich werde mal schauen, ob ich einen finde. vielen dank.
Aber was für einen Servomotor hast du denn da genommen. Oder auf welche "Eckdaten" muss man achten, wenn man (so) einen Servo käuflich erweben will?
Ist sowas schon ausreichend/ empfehlenswert http://www.conrad.de/goto.php?artikel=233751? (zumindest sieht ja das Bild dem hier ganz ähnlich: https://www.roboternetz.de/wissen/in...os#Anmerkungen
Hat vielleicht jemand eine Idee bzw weiß jemand, wo man so einen Servomotor 'rausschlachten' kann?
Gruß
Christian
Damit doch noch mal eine Benachrichtigung an euch ´raus geht:
OK, Link ist oben geändert.
Ist so ein Motor vielleicht in einem alten Drucker, die müssen doch auch relativ genau Schritt für Schritt die Rolle weiter drehen...
Gruß
Christian
Hallo
Diese Servos habe ich verwendet:
Bild hier
Conrad-Servo ES-05
Grundsätzlich sollte das mit allen Servos funktionieren, denn man kann die Servos verschiedener Hersteller auch bei allen anderen RC-Anlagen verwenden. Aber ich habe auch keine genaueren Kenntnisse, das ist mein erster Kontakt mit Servos.
Leider findet man Servos im normalen Haushalt recht selten, gelegentlich kann man sie vielleicht aus etwas hochwertigerem RC-Spielzeug ausschlachten. Da sie aber Massenware sind, erhält man sie recht günstig beim Elektronikversand oder bei einer Onlineversteigerung. Oder eben beim freundlichen Modelbauladen um die Ecke. In Druckern werden sie nicht eingesetzt, hier verwendet man technisch vollkommen anders funktionierende Schrittmotoren.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ich hab´mir sowas schon geadcht, wäre ja auch zu einfach gewesen... Danke für deine Hilfe!Zitat von radbruch
Mit der Schaltung sollten eigendlich alle Servos steuerbar sein.
Der Servo wird da ja 'nur' durch die pfifige Minimallösung 'getaktet'.
Aufpassen muss man nur bei den verschiedenen Stecker-Belegungen der Servos bei unterschiedlichen Herstellern. Klick mal hier auf Servos!
@radbruch
Tolle Idee, den Lötkolben wegzulassen und trotzdem etwas an den Asuro 'anzuklemmen'.
P.S.: Es ist immer gut, allen Variablen, die sowohl innerhalb als auch ausserhalb von Interruptfunktionen benutzt werden, das volatile voranzustellen.
Lieber Asuro programieren als arbeiten gehen.
Lesezeichen