- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 41

Thema: RP6 Linienfolger

  1. #11
    Neuer Benutzer
    Registriert seit
    19.03.2008
    Alter
    43
    Beiträge
    1
    Anzeige

    Powerstation Test
    Es hat sogar bei mir im Bett geklappt. Ich hab nur eine dünne schwarze Schnur auf die unebene Bettdecke gelegt und los gings mit der Linienverfolgung.

    Ihr seit echt zum Loben!


    DANKE

  2. #12
    Moin,

    ich hab mich auch mal mit einem Linienfolger befasst und 2 CNY70 an meine M32 angeschlossen bekommen. So weit funktioniert alles, nur leider sind die mitgelieferten Fahrfunktionen des RP6 viel zu träge, um einigermaßen vernünftig zu reagieren.

    Nun würde ich gerne wissen, ob es schon ein paar ausgereifte und erprobte Modifizierungen der Libraries gibt, mit denen der RP6 ein bisschen schneller wieselt. Ich habe das Beispielprog von radbruch weiter oben schon gesehen, aber ich steurere den RP6 ja von meiner M32 aus und somit funktioniert dieser Ansatz leider nicht.

    Würde mich über Antworten freuen

  3. #13
    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

    Auch wenn das M32 den RP6 lenkt, die Motorfunktionen werden doch weiterhin von der Base gesteuert. Dann müßte meine setMotorPWM()-Funktion auch funktionieren. Sie ergänzt die Lib mit der Möglichkeit die PWM-Werte für die Motoren direkt zu setzen. Natürlich mit dem Risiko eines Getriebeschadens bei falscher Anwendung!

    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!

  4. #14
    Moin,

    du hast Recht, hab ganz vergessen, dass die Ansteuerung über die Base gehen muss. Ich hab jetzt einfach die beiden IIC-Programme um deine Funktion ergänzt und kann diese somit auch von der M32 aus aufrufen =)

    Das mit dem Getriebeschaden ist das, was mir nicht so behagt. Ich lasse mit setMotorPWM die Motoren maximal um eine Geschwindigkeit von 30 "springen", wäre mir aber trotzdem lieber, wenn das mindestens linear geregelt wäre. Ich habe glaube ich auch irgendwo im Quelltext gelesen, dass der implementierte Regler nur integral ist. Hat hier vielleicht schon jemand probiert einen PID-Regler zu realisieren, der besser und vor allem schneller regelt?

    Immerhin funktioniert jetzt alles so, wie ich es mir gedacht habe. Danke ^^

  5. #15
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Ich bin auch daran um mit der RP6 einen Linienfolger zu schaffen. Bei mir geht das mit die LDR. Beleuchtet wird mit 4 rote LEDS. Wen da nicht zufiel Fremdlicht ist, geht das einigermasse. Die PWM Steurung von Motor ist relatif "Soft". In der RP6baselib.c konnen sie das verscharfen.
    Code:
    // Soft PWM adjustment and automatic PWM shutdown if motor power is 0:
    		if(speed_adjust_timer++ > 2) {//Waarde verhoogd van 2 naar 8 voor softere PWM
    			if(mright_ptmp != mright_power) {
    				if(mright_ptmp < mright_power) 
    					mright_ptmp++;
    				else 
    					mright_ptmp--;
    				OCR1AL = mright_ptmp;
    			}
    			if(mleft_ptmp != mleft_power) {
    				if(mleft_ptmp < mleft_power) 
    					mleft_ptmp++;
    				else 
    					mleft_ptmp--;
    				OCR1BL = mleft_ptmp;
    			}
    			if(mleft_ptmp || mright_ptmp)
    				TCCR1A = (1 << WGM11) | (1 << COM1A1) | (1 << COM1B1);
    			else
    				TCCR1A = 0;
    			speed_adjust_timer = 0;
    		}
    Momentan warte ich auf andere Sensoren (IR) um das ganse nach zu bessern. Allerdings ist die Geheimnis auch in die Regelparameter von Info Sensoren bis Soll Speed motoren. Er scheint mir auch wichtig das die Sensor info plausibel bleibt in eine grosse Fenster, wen moglich die ganse Breite von RP6. Wird verfolgt...

  6. #16
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    So wird wenigstens noch eine kleine Rampe beachtet, meine Lösung war da radikaler:
    Code:
    // Achtung! Die PWM-Werte werden hier OHNE Rampe verändert! 
    void setMotorPWM(uint8_t power_links, uint8_t power_rechts) 
    { 
    extern uint8_t mleft_ptmp, mright_ptmp; 
    
       if(power_links > 210) power_links = 210; 
       if(power_rechts > 210) power_rechts = 210; 
       mleft_power=mleft_ptmp=power_links; 
       mright_power=mright_ptmp=power_rechts; 
    
       OCR1BL = power_links; 
       OCR1AL = power_rechts; 
    
       if(power_links || power_rechts) 
          TCCR1A = (1 << WGM11) | (1 << COM1A1) | (1 << COM1B1); 
       else 
          TCCR1A = 0; 
    }
    PWM wird direkt gesetzt (und die nötigen Lib-Variablen werden angepasst), ohne Rücksicht auf Verluste. Mit allen Vor- und Nachteilen die diese Ansteuerung mit sich bringt.

    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!

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    11.02.2010
    Beiträge
    14
    hi Leute, tut mitr leid dass ich den thread ausgrabe aber ich hätte da eine Frage.

    Ich habe es so gelöst wie radbruch es beschrieben hat, also auch eine Lichtquelle vorne angebracht und ein blatt Papier als reflektor im richtigen Winkel angeklebt. Funktioniert ziemlich gut, hängt eben stark von der Position des Reflektors ab.

    Ich habe dafür den zweiten Quelltext benutzt den radbruch gepostet hat, allerdings versteh ich den Quelltext nicht wirklich. könnte jemand den Quelltext von radbruch kommentieren, damit die befehle und zeilen etwas verständlicher sind. Also so Kommentare zu den Absätzen hinzufügen damit es verständlicher ist was die Befehle nun genau machen.

    Auserdem frage ich mich was der Unterschied nun zwichen den 3 Quelltexten von radbruch ist.

    Gruß

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.12.2010
    Ort
    Dörpen
    Alter
    27
    Beiträge
    120
    keine angst, ich versteh sie auch nicht

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hi!
    Ich habe hier drei CNY70 rumliegen und darf kommende Woche ne Platine meiner Wahl fräsen oder auch zwei

    Daher wollte ich dafür natürlich was mitnehmen und habe eine Frage an euch:
    Wie nah sollten die CNY's nebeneinander angebracht werden? Habe momentan 2mm von CNY zu CNY eingeplant... reicht das?
    Mehr? Weniger?
    Gibts da Erfahrungswerte?

    Danke Euch!
    Fabian

  10. #20
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Was ist an dem Programm von radbruch denn so schwierig zu verstehen?

    if (readADC(ADC_LS_L) > readADC(ADC_LS_R))

    da liest er die LDR Sensoren ein und entscheidet je nach Lichteinfall ob er mehr nach links oder mehr nach rechts steuert.. mit Hilfe von

    setMotorPWM(100,50); und
    setMotorPWM(50,100);

    was 25% und 50% PWM Puls entweder links oder rechts gibt. Und das ganze als Schleife...
    Also einfacher gehts wirklich kaum.
    @fabqu
    Zu den CNY's
    Aus http://www.rn-wissen.de/index.php/CNY70
    Da es dort aber um einen Encoder, und bei einem Linienfolger weniger um die Absolutwerte als eher die relativen Differenzen der Sensoren geht, ist es relativ egal wie weit sie auseinander stehen... nur muss dann ggf. eben die Linienbreite angepasst werden.
    Ich würde mal grob schätzen.. Abstand der CNY=Linienbreite und min. 5mm bis max 15mm. Schwarzes oder weißes Isolierband eignet sich gut für Linien auf glatten Böden, man kann aber auch seine Musterteppiche abfahren...
    LG Rolf
    Geändert von RolfD (24.09.2012 um 15:23 Uhr)
    Sind Sie auch ambivalent?

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen