- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 255

Thema: IR-bake

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Hi Dirk,

    es gibt neuigkeiten:

    - ich habe einige bauteile "gesockelt" um flexibler beim beuteiletausch zu sein
    - reflektoren an den IR dioden angebracht

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

Name:	DSCI2528-1.jpg
Hits:	21
Größe:	65,5 KB
ID:	26875

    und eine zweite platine "huckepack" , steckbar draufgesetzt mit einer zweiten blinkschaltung, die die IR bake ein und ausschaltet:

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

Name:	blinker_einstellbar.jpg
Hits:	22
Größe:	32,3 KB
ID:	26876
    mit den beiden potis kann ich fast beliebige schaltintervalle einstellen...
    Klicke auf die Grafik für eine größere Ansicht

Name:	DSCI2529-1.jpg
Hits:	16
Größe:	50,6 KB
ID:	26877

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

Name:	DSCI2530-1.jpg
Hits:	16
Größe:	38,2 KB
ID:	26878

    allein durch die reflektoren und das "blinken" der IR-LEDs ist jetzt die reichweite bis auf ca. einen meter gestiegen...

    Nächste woche werde ich andere vorwiderstände an den dioden testen und andere transistoren...
    Geändert von inka (08.12.2013 um 15:29 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,

    du bist ja wirklich hartnäckig da dran!

    Wenn ich dein Projekt von Anfang an sehe, dann könnte/sollte daraus sicher mal ein RN-Wissen-Artikel werden.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hi Dirk,

    zielstrebig ja, ich will ja schließlich eine ladestation - die auch gefunden wird - bauen...

    schon wieder taucht eine frage auf:

    ich dachte, ich könnte auf die gleiche art und weise die frequenz der zweiten schaltung (blinker) messen wie bei der ersten - zwischen dem anschluss 3 des zweiten ne555 und zwischen masse. Dort kann ich aber nur sehen wie die spannung zwischen 2 und 4 volt wechselt, kann ich so nicht die blinkfrequenz sehen und einstellen?
    gruß inka

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,
    Dort kann ich aber nur sehen wie die spannung zwischen 2 und 4 volt wechselt, kann ich so nicht die blinkfrequenz sehen und einstellen?
    Dem Oszilloskop ist die Höhe der Spannung ja egal. Da müßtest du doch die Frequenz messen können.
    Für die Verbindung mit der 1. Schaltung würde ich aber noch einen Transistor-Treiber (wie Q1 in der 1. Schaltung) dranbauen. Da der Transistor nicht viel leisten muss, genügt ein NPN-Universaltyp.
    Gruß
    Dirk

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hi Dirk,

    am kontakt 3 des blinker-NE555 habe ich über einen basiswiderstand einen NPN transistor, zu sehen im bild DSCI2529-1...

    von der unteren (grünen) platine zapfe ich nur die versorgungsspannung ab und vom collector des treibertransistors (blinker) gehe ich an die basis des NPN transistors der die IR-Dionen (auf der grünen platine) ansteuert...
    Geändert von inka (13.12.2013 um 14:33 Uhr)
    gruß inka

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo,

    habe jetzt die ganze schaltung gezeichnet:
    Klicke auf die Grafik für eine größere Ansicht

Name:	ir_bake_schaltplan_1.jpg
Hits:	26
Größe:	35,2 KB
ID:	26915

    Anhang 26912
    kann man hier auch pdf als bild (und nicht als anhang) hochladen?

    ich habe auch ein paar fotos:

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

Name:	ir_bake mit neuem netzteil.JPG
Hits:	18
Größe:	138,9 KB
ID:	26913Klicke auf die Grafik für eine größere Ansicht

Name:	ir_bake_zwei_stecker.JPG
Hits:	19
Größe:	136,4 KB
ID:	26914

    der zweiter USB-stecker war notwendig, weil beim neuen netzteil (zwei USB-ausgänge, weil ja auch die ladestation von dort versorgt werden soll) die orientierung des USB-steckers anders war, die dioden hätten gegen die wand gesendet

    das ganze funktioniert jetzt auf die entfernung von einem meter. Immer noch viel zu wenig und gefühlt mehr oder weniger vom zufall abhängig, ob der RP6 empfängt, oder nicht.

    die blinkfrequenz kann ich "nach dem gefühl" auf ca. 2x/sec, 5x/sec und 10x/sec einstellen, das wäre jetzt erstmal genau genug, es geht mir ja hier nur darum, dass die IR-dioden ein bischen abkühlen können und ich den strom, der dort durchfließt erhöhen kann. Die vorwiderstände sind momentan 22 ohm und - da ich das schlecht messen kann - gefühlt ist die "lichtleistung" der blinkenden IR-dioden (in einer kamera beabachtet) dreimal so hoch, als mit den 47 ohm...

    die abfrage (und die ausgabe im LCD display) des empfangs wird durch den aufruf dieser funktion in der main-schleife realisiert:

    Code:
    void read_IR_value(void)
    {
    I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30
        I2CTWI_readBytes(I2C_RP6_BASE_ADR, ir_value, 1);
        clearLCD();
        setCursorPosLCD(0, 2);
        writeStringLCD_P("pb2_value: ");
        setCursorPosLCD(0, 13);
        writeIntegerLengthLCD(ir_value[0], DEC, 4);
        setCursorPosLCD(2, 1);
        writeStringLCD_P("0000 = IR bake OK");
    //    setCursorPosLCD(2, 2);
    //    writeIntegerLengthLCD(ir_value[0], DEC, 4);
    }
    die ausgabe übers display ist m.e. nach viel zu langsam. Ich glaube auch, dass der sender und der RP6 sich gegenseitig austricksen, weil wenn der einer sendet, empfängt der andere gerade nicht und umgekehrt. Ich möchte folgenermassen vorgehen:

    der IR- empfänger "füllt" ein array von der größe von 30-50 bytes(?) in seiner eigenen geschwindigkeit und überschreibt die werte wenn der platz voll ist. Die abfragefunktion sollte auf das array zugreifen und den inhalt auswerten. Das kann durchaus langsammer als das empfangen der IR-signale geschehen. Wenn die abfrage - das ist jetzt einfach nur eine hausnummer - 10 "ok" zeichen hintereinander als bestätigung eines IR-empfangs findet macht der RP6 irgendwas. Blebt stehen, piepst die ode an die freude oder was auch immer...

    wie gehe ich das jetzt an? Mit arrays habe ich noch nichts gemacht
    Geändert von inka (13.12.2013 um 16:30 Uhr) Grund: schaltplan als jpeg hochgeladen
    gruß inka

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo,

    inzwischen bin ich durch die verkleinerung des basiswiderstandes R13 von 4,7k auf 3,2k auf einer reichweite der bake von 3 metern angekommen, wohlgemerkt bei (noch) auf niedrigerer temperatur arbeitendem Q2, nach ca. 1 minute wird es schlechter...

    jetzt möchte ich außer der reaktion auf dem LCD eine andere reaktion sehen und es klappt nicht:

    mit dem aufruf dieser Funktion aus der while schleife (siehe weiter unten):
    Code:
    void read_IR_value(void)
    {
    
        I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30
        I2CTWI_readBytes(I2C_RP6_BASE_ADR, ir_value, 1);
    
    }
    while-schleife:
    Code:
        while(true)
        {
    
        read_IR_value();
    
        clearLCD();
    
        setCursorPosLCD(0, 0);
        writeStringLCD_P("dez: ");
        setCursorPosLCD(0, 13);
        writeIntegerLengthLCD(ir_value[0], DEC, 4);
    
        setCursorPosLCD(1, 0);
        writeStringLCD_P("bin: ");
        setCursorPosLCD(1, 8);
        writeIntegerLengthLCD(ir_value[0], BIN, 8);
    
        setCursorPosLCD(2, 0);
        writeStringLCD_P("hex: ");
        setCursorPosLCD(2, 8);
        writeIntegerLengthLCD(ir_value[0], HEX, 4);
    
    /*
        if (ir_value[0] = 0)
            {
            sound(180,80,25);
            setLEDs(0b1000);
            sound(220,80,25);
            mSleep(500);
            }
    */
        readAllRegisters();
    
    
        }
        return 0;
    werden die werte der variablen "ir_value", also 0 oder 4 je nachdem ob bake "gesehen" wird oder nicht auf dem LCD ausgegeben.

    die if abfrage (hier auskommentiert) der variablen "ir_value" habe ich (bei abgeschalteter bake) mit den werten 1 bis 4 probeweise ausgeführt, die reaktion erfolgt richtig, es piepst. Frage ich nach dem wert "0", passiert nichts, auch bei eingeschalteter bake und auf dem display erscheinendem wert "0"


    ich verstehe es einfach nicht. Frage ich die falsche variable ab? Oder nach falschen werten? Oder sind die abfrageabstände zu kurz? kann der beeper nicht so schnell reagieren?
    Geändert von inka (19.12.2013 um 16:54 Uhr)
    gruß inka

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,

    3 Sachen:
    1. Die Abfrage if (ir_value[0] = 0) ergibt nie das gewünschte Ergebnis, aber if (ir_value[0] == 0) würde helfen.
    2. Die Abfragefrequenz sollte man auch reduzieren, z.B. mit einer Stopwatch. 250 bis 500ms sind sicher ausreichend. Immerhin muss auch noch die I2C-Kommunikation zwischen RP6 und M32 erfolgen: Das braucht Zeit.
    3. ir_value[0] ist ein Feld-Variable. Wo wird die gefüllt?
    Gruß
    Dirk

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hi Dirk,


    zumindest der punkt 1 hätte mir auffallen müssen...- jetzt reagiert die abfrage auf das empfangen des IR-signals...

    die verzögerung habe ich mit "mSleep(500)" gemacht , das ist wohl blockierend - wenn ich es richtig in erinnerung habe - stört das hier?

    Zitat Zitat von Dirk Beitrag anzeigen
    3. ir_value[0] ist ein Feld-Variable. Wo wird die gefüllt?
    oh, ich dachte das passiert hier

    Code:
    void read_IR_value(void)
    { 
    I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30
    I2CTWI_readBytes(I2C_RP6_BASE_ADR, ir_value, 1);
    }
    ist das nicht so?

    ansonsten ist sie in der programmdatei so:
    Code:
    uint8_t ir_value[1];
    deklariert...
    gruß inka

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi,

    mSleep() ist leider blockierend.
    Besser sind die Stopwatches, siehe Anleitung des RP6, 4.6.3. Delay Funktionen (...), Überschrift "Stopwatches". Da ist auch ein Beispiel mit 2 Stopwatches.

    Die Feldvariable, die als uint8_t ir_value[1] deklariert ist, enthält letztlich nur EINE Variable, die heißt ir_value[0].
    So muss man sie auch ansprechen.
    Die beiden Variablen ir_value und ir_value[0] sind nicht identisch.
    Gruß
    Dirk

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. IR-Bake
    Von tornado im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 05.07.2007, 17:37
  2. IR-Bake
    Von Bernd-das-Brot im Forum Sensoren / Sensorik
    Antworten: 38
    Letzter Beitrag: 13.12.2005, 16:14
  3. ir-bake
    Von pebisoft im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 8
    Letzter Beitrag: 17.01.2005, 13:41
  4. ir-bake
    Von pebisoft im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 17.01.2005, 07:01
  5. Bake
    Von techboy im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 02.11.2004, 10:17

Berechtigungen

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

12V Akku bauen