So viel Imput auf einmal.....aber trotzdem vielen, vielen Dank für diese ausführliche Erklärung!
Ich denke ich werde mir das morgen alles noch einmal in Ruhe durchlesen, für Heute ist es zu spät![]()
So viel Imput auf einmal.....aber trotzdem vielen, vielen Dank für diese ausführliche Erklärung!
Ich denke ich werde mir das morgen alles noch einmal in Ruhe durchlesen, für Heute ist es zu spät![]()
Hallo
Die Threads sind jetzt zusammengeführt. Beim Durchlesen ist mir noch etwas aufgefallen:
"die Anoden der rechten IR-LEDs an Signal 1 von X1 angeschlossen, die Anoden der linken an Signal 2 von X1"
Das bedeutet, die LEDs sind parallel angeschlossen und jede LED hat einen eigenen Vorwiderstand? Einfacher wäre es, wenn die LEDs in Reihe geschaltet werden, so sieht das z.B. beim probot aus:
Bild hier
(Bildausschnitt aus der probot-Beschreibung Seite 37)
Das sind zwar 3mm-LEDs und die Polung stimmt nicht, aber es zeigt das Prinzip. (Mit geänderter Ansteuerung würde das auch bei der bee funktionieren, aber es wäre unnötig komplizierter;)
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!
Hallo,
ich habe die LEDs so angeschlossen wie in der angehängten Grafik.
Allerdings habe ich noch eine Frage zu dem Programm, das die LEDs erst einmal leuchten lassen soll. Am Anfang werden normal die header-dateien "included" und dann die Ports definiert? ..Und wie sieht die Endlos-Schleife dann aus?
Hallo
Prima, allerdings scheint mir der 470er etwas groß. Aber vielleicht ist das auch ein Vorteil weil das ACS dann nicht so empfindlich ist.
Ich habe meine bee jetzt reaktiviert und ein kleines Demo zusammengebastelt. Da mir die Library der bee noch nie gefallen hat, und als kleine Herausforderung für mich, verzichte ich vorerst auf den Einsatz der Lib. Ich hoffe, die Funktionen sind trotzdem nachvollziehbar.
Da meine ACS-Erweiterung andere Pins verwendet habe ich die #defines auch für meine bee eingefügt und auskommentiert. Diese Version sollte deshalb auf deiner bee funktionieren:
GrußPHP-Code:
// Übungen für ACS an Nibobee 9.6.11 mic
// https://www.roboternetz.de/community/showthread.php?53494-ACS-an-NIBObee
// Die Anoden der rechten IR-LEDs hängen mit Vorwiderstand an PA0 (X1-AN0)
// Die Anoden der linken IR-LEDs hängen mit Vorwiderstand an PA1 (X1-AN1)
// Die Kathoden beider IR-LEDs sind mit PA3 (X3-AN3) verbunden
// Der IR-Empfänger ist mit PA2 (X2-AN2) verbunden
// pacman-bee
#define ddr_acs_led_l DDRA // Anoden der IR-LEDs links
#define port_acs_led_l PORTA
#define pin_acs_led_l (1<<PA1)
#define ddr_acs_led_r DDRA // rechts
#define port_acs_led_r PORTA
#define pin_acs_led_r (1<<PA0)
#define ddr_acs_36kHz DDRA // Kathoden der IR-LEDS mit 36kHz getaktet
#define port_acs_36kHz PORTA
#define pin_acs_36kHz (1<<PA3)
#define ddr_acs_tsop DDRA // Eingang IR-Empfänger
#define port_acs_tsop PINA // Achtung, das ist ein Eingang!
#define pin_acs_tsop (1<<PA2)
/*
// radbruch-bee
#define ddr_acs_led_l DDRA // Anoden der IR-LEDs links
#define port_acs_led_l PORTA
#define pin_acs_led_l (1<<PA2)
#define ddr_acs_led_r DDRA // rechts
#define port_acs_led_r PORTA
#define pin_acs_led_r (1<<PA3)
#define ddr_acs_36kHz DDRC // Kathoden der IR-LEDS mit 36kHz getaktet
#define port_acs_36kHz PORTC
#define pin_acs_36kHz (1<<PC2)
#define ddr_acs_tsop DDRC // Eingang IR-Empfänger
#define port_acs_tsop PINC // Achtung, das ist ein Eingang!
#define pin_acs_tsop (1<<PC3)
*/
#include <avr/io.h>
#include <util/delay.h>
void leds(uint8_t status) // status bit0 bis 3 entspricht den LED0 bis 3
{
PORTB &= 0b11110000; // alle LED ausschalten
PORTB |= 0b1111 & status; // gewünschte LED einschalten
}
int main(void)
{
DDRB |= 0b1111; // PB0 bis PB3 sind die LED 0 bis 3
leds(0b1001); // LED 0 und 3 einschalten
_delay_ms(1000); // eine Sekunde warten
leds(0); // alle LED ausschalten
ddr_acs_led_l |= pin_acs_led_l; // linke ACS-LED Anode
ddr_acs_36kHz |= pin_acs_36kHz; // Kathoden beide LED
port_acs_36kHz &= ~pin_acs_36kHz; // Dauerlicht
while(1)
{
port_acs_led_l |= pin_acs_led_l; // linke IR-LED anschalten
leds(0b0010); // LED1 zur Kontrolle einschalten
_delay_ms(500);
port_acs_led_l &= ~pin_acs_led_l; // linke IR-LED ausschalten
leds(0); // LED1 zur Kontrolle ausschalten
_delay_ms(300);
}
return(0);
}
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ach, ich weiß gar nicht wie oft und viel ich dir noch danken sollich habe das Programm mal geflasht. Die LEDs leuchten auch, aber wie stelle ich fest, ob die IR-LEDs auch leuchten?
habe mal gehört man kann das mit einer Kamera irgendwie sehen?
![]()
Mit einer Digicam/Handycam kann man das IR-Licht erkennen. Gegenprobe wäre eine Fernbedienung die auch von der Kamera gesehen werden kann. Meine IR-LEDs (und auch der lötempfindliche IR-Empfänger) sind gesteckt, zum Testen kann ich sie gegen normale LEDs austauschen.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo!
Ich habe mal deinen Code geflasht:
Bei diesem Programm leuchten zwar die LEDs wie vorgeschrieben, die IR-LEDs allerdings nicht. Die IR-LEDs sind alle richtig rum eingebaut und es gibt auch keine kalten Lötstellen. Danach habe ich mit dem Multimeter an den Anschlüssen von X1, X2 und X3 gemessen und festgestellt, dass dort überhaupt keine Spannung anliegt (bzw. 0,09 V).Code:// Die Anoden der rechten IR-LEDs hängen mit Vorwiderstand an PA0 (X1-AN0) // Die Anoden der linken IR-LEDs hängen mit Vorwiderstand an PA1 (X1-AN1) // Die Kathoden beider IR-LEDs sind mit PA3 (X3-AN3) verbunden // Der IR-Empfänger ist mit PA2 (X2-AN2) verbunden // pacman-bee #define ddr_acs_led_l DDRA // Anoden der IR-LEDs links #define port_acs_led_l PORTA #define pin_acs_led_l (1<<PA1) #define ddr_acs_led_r DDRA // rechts #define port_acs_led_r PORTA #define pin_acs_led_r (1<<PA0) #define ddr_acs_36kHz DDRA // Kathoden der IR-LEDS mit 36kHz getaktet #define port_acs_36kHz PORTA #define pin_acs_36kHz (1<<PA3) #define ddr_acs_tsop DDRA // Eingang IR-Empfänger #define port_acs_tsop PINA // Achtung, das ist ein Eingang! #define pin_acs_tsop (1<<PA2) #include <avr/io.h> #include <util/delay.h> void leds(uint8_t status) // status bit0 bis 3 entspricht den LED0 bis 3 { PORTB &= 0b11110000; // alle LED ausschalten PORTB |= 0b1111 & status; // gewünschte LED einschalten } int main(void) { DDRB |= 0b1111; // PB0 bis PB3 sind die LED 0 bis 3 leds(0b1001); // LED 0 und 3 einschalten _delay_ms(10000); // eine Sekunde warten leds(0); // alle LED ausschalten ddr_acs_led_l |= pin_acs_led_l; // linke ACS-LED Anode ddr_acs_36kHz |= pin_acs_36kHz; // Kathoden beide LED port_acs_36kHz &= ~pin_acs_36kHz; // Dauerlicht while(1) { port_acs_led_l |= pin_acs_led_l; // linke IR-LED anschalten leds(0b0010); // LED1 zur Kontrolle einschalten _delay_ms(5000); port_acs_led_l &= ~pin_acs_led_l; // linke IR-LED ausschalten leds(0); // LED1 zur Kontrolle ausschalten _delay_ms(3000); } return(0); }
Wie kann das sein?
Lesezeichen