PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IR Diode an analogen PIN



pinsel120866
14.11.2012, 10:30
Hallo,

ich hätte eine Frage: Ich will eine Infrarot-DIODE vom Typ SFH415-U an den analogen PIN eines ATMEGA Prozessors anschliessen (ADC6 bzw. ADC7) und dann auf LOW bzw. HIGH schalten.

Funktioniert das, oder muss es ein digitaler PIN sein?

Che Guevara
14.11.2012, 10:51
Hi,

ja, das funktioniert. Ein Analoger Pin kann sowohl als AD-Wandler-Eingang als auch als normaler digitaler Pin verwendet werden. Jedoch solltest du darauf achten, dass es meistens nicht so viele ADC-Eingänge auf einem Chip gibt, also wäre es evtl. sinnvoller, einen anderen Pin zu verwenden, sofern du die ADCs benötigst.

Gruß
Chris

oberallgeier
14.11.2012, 10:55
... SFH415-U an den analogen PIN eines ATMEGA ... muss es ein digitaler PIN sein?Nein, es muss natürlich kein "digitaler" Pin sein, fast alle Pins sind frei konfigurierbar - im Rahmen ihrer Definition. Die steht im Datenblatt üblicherweise im Kapitel 1 und Pin configurations.

Im folgenden, funktionierenden, Code zu meinem MiniD0 ist ein PORTC sozusagen durcheinander konfiguriert. Du siehst dort PC0 bis ~2 als digitalen Eingang (für nen Photoempfänger), PC3 als analogen Eingang für den ADC um nen analogen Entfernungsmesser GP2D120 auszulesen mit ca. 0,5 bis 3V und schließlich PC4 und PC5 als digitale Ausgänge für meine Signal-LEDs. Die zugehörige Pindefinition steht auch dabei - so könntest Du das als Anschauungsbeispiel nehmen.

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Pins/Ports als Ein- (0) oder Ausgänge (1) konfigurieren, Pull Ups (1) aktivieren
// A = Ausgang, E = Eingang ohne , EU = Eingang MIT PullUp
DDRB = 0b00111111; // siehe aktuell oben oder Fortschritt/R2D2
PORTB = 0b00000000; // und Port/Pull Ups (1) aktivieren
//
DDRC = 0b01110000; // PC3 ist ADC3, PC0 .. 6 , kein PC7-Pin bei m168
PORTC = 0b00001111; // Beachte für ADC: PC3 ist ADC-Eingang ##>> OHNE Pullup !!
//
DDRD = 0b11110000; // -> siehe unter DDRB, sowie PD2,3 extInt
PORTD = 0b00001111; // Pull Ups aktivieren
// Encoder_1 = ExtINT0 = PortD2, Encoder_2 = PortD3
// Dadurch Initialisierung der Anschlüsse für miniD0 auf mega328: - - - - - - - -
// /RESET,PC6 1 A A 28 PC5,(SCL), gnLED
// RxD,PD0 2 EU A 27 PC4,(SDA), rtLED
// TxD,PD1___3 EU E 26___PC3, ADC=GP2D120
// SigMot1/ExtINT0,PD2 4 EU EU 25 PC2, SFH 5110, IN irDME 4 Rechts
// SigMot2/ExtINT1,PD3 5 EU EU 24 PC1, SFH 5110, IN irDME 3 Links
// __|-- 1A vor, PD4___6 A EU 23___PC0, SFH 5110, IN irDME 1-2 Mitte
// - - - - - - Belegung Pinne - - - - - - - - -
// XTAL1 PB6___9 E 20___VCC
// XTAL2 PB7 10 E A 19 PB5, SCK !!22Jun12 => Taster2 => gnLED
// PWM 1,2 uz+Guz,PD5 11 A A 18 PB4, MISO, --|__ 2A zrü
// PWM 3,4 uz+Guz,PD6__12 A A 17___PB3, MOSI !!22Jun12 => Reserve 2 => rtLED
// _|-- 1,2 uz,PD7 13 A A 16 PB2, Servo
// --|__ 1,2 Guz,PB0 14 A A 15 PB1, OC1A = SFH 415, OUT (irDME)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

PS: Die SFH415 kann bis zu 100 mA ziehen. Du denkst bitte schon daran, dass ein einzelner Pin das nicht liefern kann!? Also bitte den Vorwiderstand entsprechend dimensionieren oder zum Schalten einen Transistor nehmen.


PPS: Wieder beim alten Hobby? Du hattest doch mal "alles?" verkauft?

pinsel120866
14.11.2012, 13:00
Danke für eure Antworten. In dem Fall kann ich mit dem Port ADC6


PORTC |= (1 << PC6); // PC6 auf HIGH (LED ausschalten)
PORTC &= ~(1 << PC6); // PC6 auf LOW (LED Ausschalten)

arbeiten, oder?

oberallgeier
14.11.2012, 14:26
... In dem Fall ... PORTC |= (1 << PC6); // PC6 auf HIGH (LED ausschalten) ...?Ja, WENN Du nen Pin C6 hast. Je nachdem wie die Diode geschaltet ist - vom Pin zum GND oder zu Vcc funktioniert der Befehl wie beschrieben oder "andersrum".

Searcher
14.11.2012, 17:18
...Infrarot-DIODE vom Typ SFH415-U...
Aber gut Strom begrenzen. Das Ding kann ganz schön viel ziehen.

Gruß
Searcher