PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem beim Mega8 + ADC



khazad
18.01.2005, 21:14
Hi habe an meinem Mega8 an Channel 5 des ADC einen Fotowiderstand der die helligkeit misst und damit die hintergrundbeleuchtung meines LCDs steuert, an chennel 4 + 3 wollte ich CNY 70 für die Linien verfolgung anbringen aber komischerweise verändert sich der wert von channel 4+3 wenn sich der wert an channel 5 verändert habe alle mit einem Pull Down versehen geht die werte bleiben trotzdem nicht auf null hoffe ihr könnt mir helfen

-Maik

19.01.2005, 09:09
mit welcher sprache programmierst du denn?

Martin

RCO
19.01.2005, 09:56
Wäre schön, wenn du eine kleine Skizze machen könntest und den Quellcode posten könntest (ich hoffe Bascom ;-) )
Generell sollte das eigentlich nicht passieren.

MFG Moritz

khazad
20.01.2005, 13:30
Also mein Code in Bascom schaut so aus:




'$sim

'----- Registrations Datei und Quartz -----

$regfile = "m8def.dat"
$crystal = 4000000
'baud = 9600

'----- -----

Config Portd = Output
Ddrb = &B0000011

'----- Lcd Initialisieren -----

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.6 , Rs = Portd.7

Declare Sub Lcds

'----- ADC Initialisieren -----

Config Adc = Single , Prescaler = Auto , Reference = Avcc
'Enable Adc

'----- Variablen -----

Dim A As Word , Channel0 As Byte , Channel1 As Byte , B As Word , Channel2 As Byte , C As Word , Empfang As Byte

'Enable Interrupts
Cursor Off
Channel0 = 5
Channel1 = 4
Channel2 = 3


Do
Start Adc
A = Getadc(channel0)
B = Getadc(channel1)
C = Getadc(channel2)
Stop Adc

If A < 150 Then
Portb.0 = 1
Else
Portb.0 = 0
End If

Call Lcds


Loop


End

Sub Lcds
Cls
Locate 1 , 1
Lcd "Helligkeit: " ; A
Locate 2 , 1
Lcd "LS L:" ; B ; " R:" ; C
'Lcd "Empfangen: " ; Empfang
Waitms 300
End Sub

und meine Schaltung so... es soll channel 5 sein an 4 und 3 hängen auch 100K direkt auf gnd soll später die linien verfolgung ran

24.01.2005, 19:40
Das Ding in deiner Schaltung ist aber ein Fototransistor, kein Fotowiderstand.

Ein Fototransistor lässt einen zur Lichtstärke passenden Strom passieren (wie ein Transistor, nur dass die Basis hier durch Licht aktiviert wird).
Du solltest also den Strom messen, nicht die Spannung.

Außerdem sind 100kOhm für einen Spannungsteiler (was du wohl beabsichtigt hattest) viel zu viel. Lies dir doch bitte das Kapitel über den ADC im Datenblatt des AVR durch, sonst kannst du auch gleich die Wünschelrute benutzen.
Dann würdest du nämlich u.a. über die Aussage stolpern, dass die Impedanz der Analogspannung maximal 10k betragen sollte, um verlässliche Werte zu erhalten.

Außerdem:
Bei Analogspannungen brauchst du keine "Pulldowns". Du brauchst Spannungsteiler, evtl. Operationsverstärker (für Strommessung) und ähnliches. Pulldown-Widerstände gibts nur bei digitalen Signalen, um einen definierten Zustand zu erhalten.
Der A/D-Wandler des AVR wandelt eine Spannung in einen digitalen Wert um. Ein Pulldown-Widerstand wäre da ziemlich störend.

24.01.2005, 19:41
Das Ding in deiner Schaltung ist aber ein Fototransistor, kein Fotowiderstand.ups. gilt natürlich nur falls du den Emitterpfeil vergessen hast (was ich annehme).