- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: Nibobee Servo Ansteuerung für US

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    21

    Nibobee Servo Ansteuerung für US

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,

    wie der Titel schon sagt, möchte ich bei der Bee mit einen Servo den US schwenkbar machen. Habe schon einige Beiträge gelesen, jedoch nicht wirklich das gefunden, was ich mir vorgestellt habe.
    Wenn, dann warens nur irgednwelche Servo Tests in Schleifen...


    Eine Anwendungsart, die mir recht gut gefallen hat, war die Ansteuerung über die Hardware PWM, jedoch sind diese Pins schon vergeben. Somit bleibt doch eigentlich nur noch eine Software PWM über, oder ?

    Kurze Beschreibung meiner Idee:

    Verwendung von Timer 0 - 8 Bit (0-255), F_CPU =15.000.000Hz, Prescaler 8
    Somit 15.000.000/8/256 = 7324 Overflows in der Sekunde, das heißt alle 0,136 ms ein Interrupt.
    Wenn ich dann den Ausgang auf HIGH setze und nach 7 Overflows (1,088ms) wieder auf LOW setze, müsste das funktionieren, liege ich da richtig ..?

    Aber !? => wenn ich alle 0,136ms einen Interrupt bekomm, behindert das doch sehr das restliche Programm der Bee, oder ? (fahren, US messen, ..)

    Danke für eure Unterstützungen
    Grüße xmaniix

  2. #2
    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

    Hier erzeuge ich das Servosignal mit Software-PWM und 36kHz Taktfrequenz:

    Bild hier  
    http://www.youtube.com/watch?v=G836SWiYA_c
    https://www.roboternetz.de/community...l=1#post437989


    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!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    21
    Hey radbruch,

    danke für deine schnelle Antwort - leider erst jetzt dazugekommen, mir das anzuschauen.

    also nur grundlegend.. meiner Berechnung nach habe ich eine PWM Taktfrequenz von 7,3 kHz (15MHz/8/256)...oder ?

    deinen Code schnall ich noch nicht wirklich ganz..
    zu meiner Frage oben, kannst du dazu bitte noch was sagen => wenn ich alle 0,136ms einen Interrupt bekomm, behindert das doch sehr das restliche Programm der Bee, oder ? (fahren, US messen, ..)

    danke & Grüße,
    xmaniix

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Beiträge
    355
    wenn ich alle 0,136ms einen Interrupt bekomm, behindert das doch sehr das restliche Programm der Bee, oder ? (fahren, US messen, ..)
    Ja dein Programm wird alle 0.136ms unterbrochen, egal was es macht (nicht wenn zu diesem Zeitpunkt Interrupts gesperrt sind weil z.B. ein anderer Interrupt abgearbeitet wird). Deswegen sollte man die Ineterrupt service Routinen kurz halten, z.B. nur eine Variable hochzählen, Flag setzten o.ä., damit das Programm nicht allzulange unterbrochen wird.
    MfG Torrentula

  5. #5
    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

    leider erst jetzt dazugekommen, mir das anzuschauen.
    Kein Problem, ich habs nicht eilig.

    meiner Berechnung nach habe ich eine PWM Taktfrequenz von 7,3 kHz (15MHz/8/256)
    Mir ist völlig schleierhaft, was du da berechnest. Im oben verlinkten Beitrag findest du das:

    TCCR2 = (1 << WGM21) | (1 << CS20); // CTC-Mode, no prescaling, no OC2-PIN!
    OCR2 = 208; // 36kHz @15MHz


    Der Timer2 zählt in diesem Modus von 0 bis 208, das ergibt 15000000/208 oder etwa 72000 Aufrufe der ISR pro Sekunde. Mit diesem Takt werden die LinienLEDs umgeschaltet, deshalb ist ihr Signal mit 36kHz moduliert:

    if(status) {LineLEDs_on; status=0;} else {LineLEDs_off; status=1;}
    (In der ISR)

    Ein 36kHz-TSOP kann so modulierte Daten problemlos lesen. Und der Rest ergibt sich dann ebenfalls: 1/72000*1440 sind genau 20ms für die Wiederholfrequenz des Servosignals:

    if(count<1440) count++; else {count=1; if(p) p--;};
    (Ebenfalls in der ISR)

    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!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    21
    Hey,

    sry bin erst jez wieder im Lande, also hab nicht vergessen zurück zu schreiben !
    Hab mir den Code jetzt genauer angeschaut und ist gut verständlich !


    nur eins, was macht
    Code:
    echo[14-servopos]=analog_getValue(ANALOG_EXT3);

    Vielen Dank für den Code !

    Grüße xmaniix !


    PS: Bezüglich dem Video, was ist das, durch die leider schlechtere Qualität, nicht erkennbare halbrunde "Ding" (mit rotem Streifen) in der Mitte auf der Bee ? *neugierig*

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


    Eines meiner vielen unfertigen Projekte:
    https://www.roboternetz.de/community...l=1#post436013


    Echo ist ein Array in das ich die Sharpwerte der Positionen speichere:
    Code:
    	uint16_t echo[16];
    
    	while(1)
    	{
    	   servo=35+servopos*10;
    	   delay(100);
    	   echo[14-servopos]=analog_getValue(ANALOG_EXT3);
    	   if((servopos==0) || (servopos==14))
    		{
    			for(c=0; c<15; c++)
    			{
    				writeInteger(echo[c], 10);
    			   writeString("-");
    			}
    			writeString("\n\r");
    	   }
    	   servopos+=schwenk;
    	   if(!servopos) schwenk=1; else if(servopos==14) schwenk=-1;
    	}
    Nach jedem Schwenk werden die Daten gesendet.
    Geändert von radbruch (21.08.2012 um 20:02 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    21
    Sieht cool aus, dachte für nen kurzen Moment das ist ein Echolot wär natürlich auch cool !!

    Ah ok, dann mach ich mich jetzt mal daran meinen Servo zum Laufen zu bringen ! (:

    Greetz

Ähnliche Themen

  1. RP6 Servo Ansteuerung
    Von RP6-Besitzer im Forum Robby RP6
    Antworten: 13
    Letzter Beitrag: 18.10.2010, 17:03
  2. Servo ansteuerung
    Von ChristophB im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 23.10.2009, 20:36
  3. Ansteuerung Servo mit Servo Fkt. oder mit PWM?
    Von cosanostra im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 14.11.2007, 11:26
  4. Antworten: 3
    Letzter Beitrag: 02.11.2007, 03:41
  5. Servo Ansteuerung
    Von Gerko im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 26.11.2006, 19:40

Stichworte

Berechtigungen

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

12V Akku bauen