- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: Nibobee Ultraschall - wie anschließen ?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    21

    Nibobee Ultraschall - wie anschließen ?

    Hallo zusammen,

    nachdem ich seit kurzem von der Robotik begeistert bin, jedoch noch das Wissen fehlt eine kurz Frage an euch. Ich hab mir den Nibobee gekauft, fertig zusammengebaut und auch schon gecoded.
    Mit der Biene hab ich mir einen SRF04 Ultraschallsensor und einen kleinen Servo mitbestellt, sowie die Erweiterungsplatine mit Remote-Modul.

    Mein Problem ist jetzt, dass ich Null Plan habe, wie ich diesen Servo mit dem US anschließen muss/kann, das der funktioniert. Kann mir da bitte von euch einer weiterhelfen ?

    Bzw wenn ihr das wisst, wodurch weiß man das ? Wieviele Erweiterungen kann man der Biene hinzufügen ? Kann ich das Remote-System auch noch dazubauen oder reicht dazu der Platz nicht ?


    Ihr seht, das ich noch blutiger Anfänger bin

    Danke im Voraus für eure Bemühungen !!!

    Grüße Manii

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    21
    Hallo nochmals,

    habe jetzt noch eine kurze Beschreibung der Erweiterungports der Biene & des SRF05 (ich berichtige-dachte ich habe den 04er).

    Klicke auf die Grafik für eine größere Ansicht

Name:	2012-06-04_18h14_29.png
Hits:	7
Größe:	61,9 KB
ID:	22484

    Betriebsmode 1 - SRF04 Kompatibler Mode - Getrennter Auslöse- und Ergebnisport
    Klicke auf die Grafik für eine größere Ansicht

Name:	2012-06-04_18h17_57.jpg
Hits:	7
Größe:	20,3 KB
ID:	22486

    Mode 2 – Neuer Modi mit nur einem Port für Auslösung und Messergebnis
    Klicke auf die Grafik für eine größere Ansicht

Name:	2012-06-04_18h16_31.png
Hits:	7
Größe:	121,4 KB
ID:	22485

    Nur hilft mir das leider auch noch nicht viel Kann mir das einer näher erklären bitte ?

    Grüße Manii

  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
    Hallo

    Gleich vorweg: Ich besitze das SRF05 nicht und bin mit der bee arg aus der Übung. Deshalb gehe ich das eher theoretisch und ohne die Library der bee an.

    Basis ist der Schaltplan der bee und das Datenblatt des SRF:
    http://download.nicai-systems.com/ni...matic_1_14.pdf
    http://www.robotikhardware.de/download/srf05doku.pdf

    Ich wähle den SRF04-Modus, weil mir der Einstieg mit zwei Pins einfacher erscheint. An der bee verwende ich X4 mit den Pins PC0 und PC1 (obwohl das die I2C-Pins sind).

    Der Ablauf der Messung scheint einfach: Startimpuls ausgeben und dann messen, wie lange das SRF05 seinen Signalausgang auf high setzt. Aber wie gibt man das Ergebniss aus? Serienmäßig besitzt sie nur 4 LEDs. (Das ist wohl der Schwachpunkt der bee: Sie kann nicht komunizieren.) Wenn man die zur binären Ausgabe nutzt kann man Werte zwischen 0 und 15 anzeigen.

    Mein Ansatz: Ich messe in 10cm-Schritten. Da die Schallgeschwindigkeit in Luft ca. 344m pro Sekunde beträgt, legt das US-Signal einen Meter in 1/344 Sekunden zurück. Das sind 2,9 Millisekunden. Für 10cm sind es entsprechend 290µs. Ich hoffe, ich habe mich nicht verrechnet....

    Angezeigt wird nach der Messung die gezählten 10cm-Schritte, der Abstand ist aber nur halb so groß wie gemessen, weil das US-Signal ja den Weg doppelt zurücklegt. Auch hier hoffe ich, dass ich richtig liege...

    Und nun, tata, das Programm:
    Code:
    // SRF05 Ansteuerung mit der bee                                            mic 4.6.12
    
    // Anschluß an X4: Vcc, GND, PC0=Start, PC1=Messwert (SRF04-Modus)
    // Datenblatt SRF05: http://www.robotikhardware.de/download/srf05doku.pdf
    // https://www.roboternetz.de/community/threads/58058-Nibobee-Ultraschall-wie-anschlie%C3%9Fen
    
    // Schallgeschwindigkeit: 344m/s bei 21° (1s/344m oder 2,9ms pro Meter oder 290µs für 0,1m)
    // Quelle: http://134.176.128.63/schall.html
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    uint16_t messwert, timeout=0;
    
    int main(void)
    {
    	DDRB = 0b0001111; // Die Pins der Leds sind Ausgang
    	PORTB &= 0b11110000; // 0V ausgeben. Die Leds sind aus
    	DDRC = 0b00000001; // Im Datenrichtungsregister PC0 als Ausgang definieren (Bit 2^0)
    	PORTC &= ~(1<<PC0);// 0V ausgeben an PC0
    	
    	PORTB |= 0x0f; // alle Leds an
    	_delay_ms(1000); // eine Sekunde warten
    	PORTC &= 0xf0; // alle Leds wieder aus
    	
    	while(1)
    	{
    		PORTC |= 1; // Startimpuls ausgeben
    		_delay_us(20); // der Impuls muss mindestens 10µs dauern
    		PORTC &= 0xfe; // Startimpuls fertig
    
    		messwert=0;
    		while(!(PINC & 0b00000010) && --timeout) _delay_us(1); // Echo nach 40*290µs?
    		if(timeout>0)
    		{
    		   while(PINC & 2)
    		   {
    		      messwert++; // Messwert wird in 10cm-Schritten erhöht
    		      _delay_us(290); // 10cm warten
    			}
    			if(messwert<16) // bis 75cm können wir so mit 4 Bit messen
    			{
    			   PORTC &= 0xf0; // alle Leds aus
    			   PORTC |= messwert; // Messwert dual anzeigen
    			}
    		}
    	}
    	return 0;
    }
    (selbstverständlich ungetestet)

    Keine Ahnung, ob das halbwegs funktioniert.

    Gruß

    mic


    [Edit]
    Die Umrechnung der Entfernung wird so nicht stimmen. 1cm bis 400cm sind 100µs bis 25ms. Timeout wird zu knapp sein und wird nicht neu auf null gesetzt.
    Geändert von radbruch (04.06.2012 um 20:23 Uhr)
    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
    Neuer Benutzer Öfters hier
    Registriert seit
    28.11.2011
    Beiträge
    21
    hallo mic,

    danke für deine ausführliche antwort !!

    also so versteh ich das eigentlich was zu tun ist, nur der Sinn/Idee dahinter is mir noch schleierhaft..

    warum schließt du das an x4 an & nicht an einem der anderen ? ist es nur da möglich ? wenn ja an was merkt man das ?

    wo soll ich den servo für die Drehung des US anschließen ?

    woher weiß ich ob meine erweiterung, seien es irgendwelche weiteren abstandssensoren an einen digitalen oder analogen port müssen ?

    ich weiß, sind einige fragen hab aber schon einige zeit mit google verbracht, jedoch zum 'wo schließt man was am besten an' nicht viel gefunden!

    Danke & Grüße Manii

  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

    Aller Anfang ist schwer.

    X4 habe ich gewählt, weil ich mir die C-Pins gut merken kann und weil sie Bit0 und Bit1 am Port belegen. Prinzipiel kannst du mit allen Pins digitale (high/low) Signale auswerten. Da aber nur ein paar Pins auch analoge Signale einlesen können sind diese Pins "wertvoller" und man versucht, diese für spätere Erweiterungen frei zu halten.

    Die Signale deines SRF05 sind eindeutig digital:
    Bild hier  

    Hier noch das überarbeitete Programm:
    Code:
    // SRF05 Ansteuerung mit der bee (zweiter Anlauf)                               mic 4.6.12
    
    // Anschluß an X4: Vcc, GND, PC0=Start, PC1=Messwert (SRF04-Modus)
    // Datenblatt SRF05: http://www.robotikhardware.de/download/srf05doku.pdf
    // https://www.roboternetz.de/community/threads/58058-Nibobee-Ultraschall-wie-anschlie%C3%9Fen
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    uint8_t messwert, timeout;
    
    int main(void)
    {
    	DDRB = 0b0001111; // Die Pins der Leds sind Ausgang
    	PORTB &= 0b11110000; // 0V ausgeben. Die Leds sind aus
    	DDRC = 0b00000001; // Im Datenrichtungsregister PC0 als Ausgang definieren (Bit 2^0)
    	PORTC &= ~(1<<PC0);// 0V ausgeben an PC0
    	
    	PORTB |= 0x0f; // alle Leds an
    	_delay_ms(1000); // eine Sekunde warten
    	PORTC &= 0xf0; // alle Leds wieder aus
    	
    	while(1)
    	{
    		messwert=0;
    		timeout=0;
    		PORTC |= 1; // Startimpuls ausgeben
    		_delay_us(20); // der Impuls muss mindestens 10µs dauern
    		PORTC &= 0xfe; // Startimpuls fertig
    
    		while(!(PINC & 0b00000010) && --timeout) _delay_ms(4); // timeout 1 Sekunde
    		if(timeout>0)
    		{
    			while((PINC & 2) && (++messwert<16)) // Überlauf bei 16
    			{
    				_delay_us(1666); // 25ms/16-Schritte
    			}
    
    			if(messwert<16) // wir können nur 4 Bit anzeigen
    			{
    				PORTC &= 0xf0; // alle Leds aus
    				PORTC |= messwert; // Messwert dual anzeigen
    			}
    		}
    	}
    	return 0;
    }
    Auf das Servo mag ich im Moment noch nicht eingehen, aber du kannst dich schon mal einlesen:
    http://www.google.de/search?q=servosignal

    Gruß

    mic
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken srf05_timing.png  
    Geändert von radbruch (04.06.2012 um 21: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!

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

    ok jetzt kann ich mir das schon bisschen besser vorstellen

    das mit dem programmcode versteh ich von der logik her auch. Nur weiß ich noch nicht, wie ich jetzt zum erstmaligen testen den US anschliessen soll, so dass ich ihn dann aber wieder abnehmen kann für die eigentliche Erweiterung mit Servo.

    gibt es da irgendwelche steckverbindungen ?
    welche kabel nehme ich, um die pins mit dem US zu verbinden ? Hab ein Bild (glaube im Datenblatt) mit so nem rot-schwarzen kabel gesehn..
    brauch ich da noch irgendwelche elemente(widerstand, kondensator) zwischen den pins und US ?

    Hab aus interesse mal nachgeschaut was eig I2C ist und gelesen,. dass man damit ICs miteinander verbinden kann, heißt das, ich kann zB noch nen atmega16 dranhängen und dessen ports für erweiterungen benützen ?(nur mal interessehalber )

    was bedeutet 'mir die C-Pins besser merken kann', was sind C pins ?

    danke danke !!

    Grüße !

Ähnliche Themen

  1. Antworten: 103
    Letzter Beitrag: 05.09.2011, 23:00
  2. ACS an NIBObee
    Von pacman im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 37
    Letzter Beitrag: 20.06.2011, 00:05
  3. ACS an NIBObee
    Von pacman im Forum Sensoren / Sensorik
    Antworten: 6
    Letzter Beitrag: 06.06.2011, 09:32
  4. NiboBee und die Leuchtdioden
    Von Rabenauge im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 13
    Letzter Beitrag: 23.04.2010, 20:27
  5. Fernbedienung von Ir auf Ultraschall Ultraschall auf ir
    Von Firestorm1711 im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 12.05.2005, 18:32

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests