-         

Ergebnis 1 bis 4 von 4

Thema: Probot 128 ACS: Implementieren eines Abstandssensors/Distanzmessers

  1. #1

    Probot 128 ACS: Implementieren eines Abstandssensors/Distanzmessers

    Anzeige

    Hallo zusammen,

    ich habe eine grundsätzliche Frage zum Probot 128 oder besser dessen IR-LEDs und dem IR-Empfänger.

    Nach meinem Verständnis des Programmcodes und auch des Schaltplans gibt es hier nur die Möglichkeit, abzufragen, ob etwas "im Weg" ist, aber nicht, wie weit es entfernt ist.
    Der Rückgabewert der Funktionen ACS_RIGHT und ACS_LEFT ist ja auch nur ein Boolean ...

    Gibt es irgendeine (einfache) Möglichkeit, einen Abstandssensor "drumrum" zu bauen?

    Es scheint immerhin Ansätze/Versuche zu geben:
    http://www.roboternetz.de/community/...-ProBot128-ACS
    http://www.roboternetz.de/community/...l=1#post498302

    Das hat aber wohl auch nicht wirklich funktioniert, wie mir scheint

    Vielen Dank und schöne Grüße,
    phil
    Geändert von philonous (24.12.2013 um 11:57 Uhr)

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Inzwischen kenne ich vier Ansätze mit denen man mit einem IR-ACS Rückschlüsse auf die Entfernung zum Hinderniss ziehen kann:

    Änderung der Trägerfrequenz:
    Funktioniert nicht wirklich, denn der TSOP reagiert zu heftig, wenn sich die Frequenz vom Nennwert entfernt:
    http://www.roboternetz.de/community/...l=1#post326640

    Änderung des Burst:
    Ein Burst sind IR-Impulspakete. Ein IR-Empfänger reagiert erst nach einer bestimmten Anzahl von Trägerfrequenzperioden bevor er ein Signal als gültig anerkennt (typisch ca. 6-10 Perioden). Mit zunehmenden Abstand muss der Burst länger sein um erkannt zu werden. Das funktioniert leidlich...

    Änderung der Sendeleistung über Vorwiderstände:
    Mit größerem Hardwareaufwand verbunden wird hierbei der Strom durch die ACS-LED verändert. Das funktioniert gut und wird z.B. beim RP6 angewand:
    http://www.roboternetz.de/community/...(mit-Infrarot)

    Änderung der duty cycles:
    Normalerweise wird das Trägersignal mit 50:50 Impuls zu Pause gesendet. Durch Vergrößerung der Pause (Low-Anteil, kein IR-Licht) kann man sehr feinfühlig den Abstand zum Hinderniss messen. Diese Methode funktioniert sehr gut. Beispiele für die Anwendung:

    Der "Klassiger" beim Asuro nach waste:
    http://www.roboternetz.de/community/...erniserkennung
    http://www.roboternetz.de/community/...bstandsmessung

    Meine Umsetzung mit der bee:
    http://www.roboternetz.de/community/...l=1#post443546

    Mit der Probot-Hardware funktioniert die duty-cycle-Methode auch sehr gut:

    Code:
    void ACSData(unsigned int *data)
    {
    	UCSRB &= ~(1<<TXEN); // USART TX disable
    
    	OCR2=0xff;
    	DDRD |= (1<<PD1);
    	PORTD &= ~(1<<PD1); // ACS LED left on
    	while(PIND & 1)
    	{
      		acs=15;
    		while(acs);
    		OCR2--;
    	}
    	PORTD |= (1<<PD1); // ACS LED left  off
    	data[0]=OCR2;
    	while(!(PIND &1));
    
    	OCR2=0xff;
    	PORTB &= ~(1<<PB0); // ACS LED right on
    	while(PIND & 1)
    	{
      		acs=15;
    		while(acs);
    		OCR2--;
    	}
    	PORTB |= (1<<PB0); // ACS LED right  off                            6
    	data[1]=OCR2;
    	while(!(PIND &1));
    
    	OCR2=0x91; //36kHz
    }
    (Aus http://www.roboternetz.de/community/...l=1#post423547)

    Das Pulse/Pauseverhältniss wird (bei konstantem Burst von 15) schrittweise von 0:255 Richtung 50:50 geändert. Wenn der IR-Empfänger das Signal erkennt (sein Signalpegel geht auf Low) kann man aus dem aktuellen Verhältniss von Puls zu Pause auf den Abstand schliesen.

    Das funktioniert gut, scheiterte aber in den von dir gezeigten Beispielen an der Umsetzung auf dem ccpro ;)



    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Vielen Dank, mic, für die schnelle und vor allem sehr ausführliche Antwort!

    Da ich allerdings absoluter Neuling bin, ist mir allerdings unklar, ob ich das mit dem "normalen" C-Control Pro-Controller auch bewerkstelligen kann. Du hast ja in dem verlinkten Thread einen ATMega8 zur Steuerung verwendet – bei mir ist ein C-Control Pro-Controller drauf.

    Die Namen UCSRB, OCR2 usw. im Code oben sind nicht in der Lib vorhanden, müssten meiner naiven Meinung nach dann von der Pin-Belegung des Controllers kommen. Nur gibt es natürlich UCSRB, OCR2 usw. nicht in der Pin-Belegung der C-Control Pro (wie aus der Hilfe der leider nur unter Windows lauffähigen IDE entnommen hab).

    Ist es also überhaupt möglich mit entsprechender Änderung der Namen/Pins dieselbe Funktionalität mit der C-Control Pro hinzubekommen oder nimmt der letzte Satz Deines Posts schon vorweg, dass das gar nicht möglich ist?!

    Danke und schönes Fest und so
    phil

    PS: Dass man einen Interpreter verwendet, kann ich noch halbwegs verstehen, aber warum baut man eine proprietäre IDE, die nur unter Windows lauffähig ist?? Argh. (Ich hab den Roboter geschenkt bekommen, anderenfalls wäre die Wahl wohl eher auf den ASURO gefallen ... )

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Den C-Control Pro-Controller modul hat ein Atmega128 microcontroller in. Das ist den Grossere Brüder von den Atmega8. Also sind viele von den Registern, Timer, Zahlern, ADC, Pin-Funktionen ähnlich. Aber nicht gleich. Die nahmen UCSRB, OCR2 usw. werdest du in dem Datenblätter der beiden Microcontrollern finden. Auch die bestimmten Pins (von den Chip) wo sie mit verbunden sind stehen dort in. Aber welcher Pins der C-Control Pro Controller modul diesen mit verbunden sind muss du irgendwo aus der C-Control Pro documentation herausfinden. Es gibt sicher irgendwo einer Atmega128->C-Control Pro 128 Pinbelegung Tabelle.


    EDIT: Wusste ich doch: http://www.c-control-pro.de/documentation/modul128.htm

Ähnliche Themen

  1. [ERLEDIGT] ProBot 128 Displayerweiterung
    Von Widooo im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 3
    Letzter Beitrag: 07.06.2013, 10:08
  2. ACS vom ProBot Problem
    Von Band!t im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 0
    Letzter Beitrag: 18.03.2012, 00:57
  3. probot 128
    Von levi im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 0
    Letzter Beitrag: 03.08.2011, 12:26
  4. Probot 128 Programmierungsproblem
    Von Martinius11 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 9
    Letzter Beitrag: 19.08.2010, 23:58
  5. Probot 128 Erweiterung
    Von ben1.02 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 2
    Letzter Beitrag: 29.11.2009, 19:16

Berechtigungen

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