-
        

Ergebnis 1 bis 9 von 9

Thema: noch 2 Lichtsensoren

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450

    noch 2 Lichtsensoren

    Anzeige

    Hi Leute,
    um meinen RP6 nach hellste Seite suchen zu lassen, habe ich bis jetzt immer eine 180 Grad Drehung machen lassen und die Werte verglichen.

    Jetzt habe ich mal die Lichtsensoren laut Schaltplan nachgebaut und am Heck angebracht. Abfragen will ich die zuerst mal mit den beiden ADC 0 und 1. Dazu gleich noch eine Frage: Sollte ich die beiden Ports nun noch mit Kondensator und Elkos bestücken ?
    Ob ja oder nein, wie löte ich die eigentlich an ? Die Werte sind ja im HB bekannt.

    So und jetzt die Software.
    Wie frage ich denn jetzt die Sensoren ab ? die Hauseigenen frage ich z.B. mit "adcLSL" ab, kann ich denn jetzt einfach mit "adc0" abfragen. ADC0+1 sind auf Eingang geschaltet.

    Ich hoffe ja am WE wenn ich wieder zuhause alles testen zu können.
    Trainmen

  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

    Die Kondensatoren sollen die Spannung stüzen wenn am ADC0/1 hohe Belastungen auftreten sollten. Das ist bei deiner Erweiterung nicht der Fall: Auf die Kondensatoren kannst du verzichten.

    Mit readADC(Kanal) kann man die ADC-Pins einlesen.

    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
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hallo,

    ok, in diesen Fall brauche ich keine Kondensatoren. Aber ich weiß immer noch nicht, wie ich die anlöte wenn ich welche brauchte (z.B Sharp..)

    und zur Software
    Mit readADC(Kanal)
    ja das dachte ich mir schon, nur ist es ja viel mehr programmieraufwand da ich ja nun den task_RP6System nicht mehr aufrufen soll und nun auch noch die Hauseigenen mit readADC() auslesen muß.

    wie schon am Anfang bemerkt,habe ich jetzt keine Hardware hier und lese nur die Seiten rauf und runter und kann hier nichts testen.
    Deshab mal diesen Gedanken. Ich brauchte doch eigentlich die AD0+1 garnicht auslesen. Nachdem ich die beiden Ports auf Eingang habe und task_RP6System aufrufen werden doch alle 7 Kanäle abgefragt. Richtig ?Ich geh mal davon aus der Robot tut nichts anderes.
    Trainmen

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Selbstverständlich kannst du auch das (nicht blokierende) Task-System des RP6 verwenden. Die aktuellen (=zuletzt gesampelten) Werte von ADC0/ADC1 stehen dann in den Variablen adc0 und adc1.

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

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450

    noch 2 Lichtsensoren und PCF 8591

    hi Leute,

    ich habe jetzt meine zusätzlichen LDR angebaut und lese sie auch ein, werte sie aus und alles funktioniert.

    Jetzt habe ich einen PCF8591 und will nur die Ports nutzen.
    Frage: Ich habe die Pins 11-15 nicht angelötet. Richtig ?????

    um die Port nun zu testen habe ich mir das Bsp RP6Base_I2CMaster_02
    genommen. Ich bekomme aber auf allen 4 nur eine Wert von 128.
    Ob ich nun die LDR dran hab oder nicht. Nur beim an und abziehen wechselt es zwischen 128 und 254.

    was habe ich vergessen oder falsch gemacht ?

    Trainmen

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    hi,
    also meine Info das man die Pins 11-15 nicht braucht war schon mal Falsch, man sollte eben nicht alles glauben.

    Funktionieren tut es aber immer noch nicht.
    Ich bekomme zwar ohne LDR jetzt nur noch eine 0 zurück . Wenn ich jetzt die beiden Kabel auf 0 und 1 stecke. Bekomme ich folgende Ausgabe.
    LDR1:241 | LDR2:238 | LDR3:146 | LDR4:102
    obwohl auf 2(LDR3) und 3(LDR4) ja nichts steckt, aber das muß ja nichts bedeuten da ja die Hauseigenen auch Werte ausgeben obwohl da nichts dran hängt. Die Hauseigenen melden aber bei gleichem Licht.
    LDR V1:867 | LDR V2:890 | LDR H3:486 | LDR H4:399

    Wieso ist das so ???
    Trainmen

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi ich schon wieder,

    also das ich ja diese niedrigen Werte bekomme, liegt ja auch daran das ich nur eine 8 Bit Variabel habe und so ja bloss bis 255 komme.
    Also habe ich mal eine 16 Bit Variable genommen. Abgesehen davon das ich eine Warnung von WinAVR bekomme ich nur unsinn.

    LDR1:-27664 | LDR2:102 | LDR3:1 | LDR4:8322
    Hier mal der Code:
    Code:
    void task_ext_LDRs(void)
    {
    	uint8_t i=0;      // Laufvariabel
    	if (i<5)
    	{
    	    // Configure PCF8591: Ext. Output on + auto increment: 
    		I2CTWI_transmitByte(PCF8591_4LDRS_ADR, 0b01000100 ); 
    		
    		// Read the data: 
    		uint8_t results[6];
    		I2CTWI_readBytes(PCF8591_4LDRS_ADR,results,5);
    		
    		// Byte 0 contains last conversion result - thus we read 5 bytes,
    		// skip byte 0 and output only results[1] to results[4]:
    		writeString_P(" | LDR1:"); writeInteger(results[1], DEC); 
    		writeString_P(" | LDR2:"); writeInteger(results[2], DEC); 
    		writeString_P(" | LDR3:"); writeInteger(results[3], DEC); 
    		writeString_P(" | LDR4:"); writeInteger(results[4], DEC); 
    		writeChar('\n');
    		
    		i++;
    	}
    	
    }
    Wie geschrieben will ich zusätzliche LDR mit dem PCF8591 einlesen und mit den Hauseigenen vergleichen

    Trainmen

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    LDR musst du lesen, du hast aber den Befehl "writestring", könnte das der Fehler sein?

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi,
    ne das ist schon richtig, writestring gibt mir doch die Variable aus die ich mit readbyte eingelesen habe.
    Trainmen

Berechtigungen

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