- Labornetzteil AliExpress         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Minimallösung: asuro steuert RC-Servo

  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8

    Minimallösung: asuro steuert RC-Servo

    Anzeige

    Praxistest und DIY Projekte
    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:
    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 einmal etwas anspruchsvoller mit angezapftem Timer-Interrupt:
    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;
    }
    und noch die Änderung der Timerfunktion in der asuro.c:
    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 */
    }
    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.

    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!

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    06.02.2007
    Beiträge
    39
    ist die fotodiode zwingend erforderlich, d.h. kann ich sie nicht durch ein anderes bauteil ersetzen? ich hab nämlich keine fotodiode zuhause.

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    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!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    06.02.2007
    Beiträge
    39
    ^^ich werde mal schauen, ob ich einen finde. vielen dank.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2007
    Alter
    45
    Beiträge
    12
    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

  6. #6
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    conrad-shop links funktionieren nicht!! bitte rufe den artikel auf, und Suche "link zu diesem artikel". diese adresse musst du posten (am besten mit dem edit-button... =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2007
    Alter
    45
    Beiträge
    12
    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

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    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!

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2007
    Alter
    45
    Beiträge
    12
    Zitat Zitat von radbruch
    In Druckern werden sie nicht eingesetzt, hier verwendet man technisch vollkommen anders funktionierende Schrittmotoren.
    Ich hab´mir sowas schon geadcht, wäre ja auch zu einfach gewesen... Danke für deine Hilfe!

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    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.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad