www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Lichtsensor und ADC - Bascom


Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe hier ein myavr board mit einem lichtsensor drauf.
Bisher hat alles geklappt sprich led leuchten und blinken
lassen und taster abfragen. Nun will ich den lichtsensor
mit ins spiel bringen nur es funktioniert nicht. Hier mal
der Quellcode in Bascom geschrieben.

$regfile = "m8def.dat"
$crystal = 3686400

Config Portc.0 -1 = Output
Const Adc_multi = 0.0048828125
CONFIG ADC = SINGLE, PRESCALER = AUTO, REFERENCE = AVCC
START ADC
DIM messergebnis AS WORD
DIM volt AS SINGLE
Messergebnis = Getadc(5)
Volt = Messergebnis * Adc_multi

Do
If Volt >= 2 Then
 Portc.0 = 1
Else
 Portc.1 = 1
End If
Waitms 100
Loop

Danke Für Die Hilfe.!

Autor: Helmut -dc3yc (dc3yc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wann werden die beiden Ports in der Schleife mal auf 0 gesetzt?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt^^
Ist erledigt.
Aber was mach ich da falsch?
Kann man den lichtsensor auch falsch herum einbauen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias schrieb:
> Stimmt^^
> Ist erledigt.
> Aber was mach ich da falsch?

Zum Beispiel fragst du den ADC innerhalb der Schleife gar nicht mehr ab.

> Kann man den lichtsensor auch falsch herum einbauen?

Kann man sicherlich.
Was für ein Sensor ist es denn, und wie hast du ihn eingebaut?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach man sorry für die fehler bin noch anfänger in sachen 
mikrocontroller.

Hab den Lichtsensor von dem myavr board lpt hab ihn jetzt mit einem 
multimeter gemessen und es zeigte -2,.. volt an jetzt hab ich ihn 
andresrum draufgelötet jetzt zeigts mir 2,.. volt an kanns es an dem 
liegen?
Und ich hab das adc jetzt in die schleife geschrieben jetzt 
funktionierts auch. Aber es sind bestimmt noch einige fehler im 
quellcode drin oder?

$regfile = "m8def.dat"
$crystal = 3686400

Config Portc.0 -1 = Output
Const Adc_multi = 0.0048828125
CONFIG ADC = SINGLE, PRESCALER = AUTO, REFERENCE = AVCC
START ADC
DIM messergebnis AS WORD
DIM volt AS SINGLE



Do
If Volt >= 2 Then
 Portc.1 = 0
 Portc.0 = 1
Else
 Portc.0 = 0
 Portc.1 = 1
End If
Messergebnis = Getadc(5)
Volt = Messergebnis * Adc_multi
Waitms 100
Loop

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias schrieb:
> Ach man sorry für die fehler bin noch anfänger in sachen
> mikrocontroller.

Gerade dann solltest du dir eine gewisse äussere Form des Quellcodes 
aneignen. Dazu géhören zb Einrückungen, die dir zeigen von wo bis wo 
eine Schleife geht. Auch hilft eine Strukturierung mit einzelnen 
Leerzeilen optische Funktionsblöcke im Code zu erhalten und so das Auge 
zu führen.

> funktionierts auch. Aber es sind bestimmt noch einige fehler im
> quellcode drin oder?

Ja. Zb. Wie kannst du im ersten Schleifendurchlauf ein Messergebnis 
auswerten, das du noch gar nicht hast, weil es erst nach dem Auswerten 
eingelesen wird?

$regfile = "m8def.dat"
$crystal = 3686400
 
Config Portc.0 -1 = Output
Const Adc_multi = 0.0048828125
CONFIG ADC = SINGLE, PRESCALER = AUTO, REFERENCE = AVCC

DIM messergebnis AS WORD
DIM volt AS SINGLE

START ADC

Do
  Messergebnis = Getadc(5)
  Volt = Messergebnis * Adc_multi

  If Volt >= 2 Then
    Portc.1 = 0
    Portc.0 = 1
  Else
    Portc.0 = 0
    Portc.1 = 1
  End If

  Waitms 100
Loop

Dann könnte man noch darüber diskutieren, ob es wirklich notwendig ist, 
den µC eine für ihn komplexe Floating Point Operation durchzuführen.

Ob du jetzt Volt mit 2.0 oder Messergebnis (der Wert vom ADC) mit 409 
als Grenzwert vergleichst, kommt aufs selbe raus. Nur macht der µC 
letzteres mindestens 50 mal schneller, weil nichts rumgerechnet werden 
muss :-)


> Hab den Lichtsensor von dem myavr board lpt hab ihn jetzt mit einem
> multimeter gemessen und es zeigte -2,.. volt

Sicher, dass du das Voltmeter nicht einfach nur verkehrt herum 
angeklemmt hast? Ich bin mir fast ziemlich sicher, dass auf dem MyAvr 
Board mit Ausnahme des RS232 Teiles nirgends negative Spannungen 
vorkommen.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oke danke.
Mir wurde jetzt einiges klarer dargestellt.
Jetzt funktionierts auch einwandfrei was ich
machen wollte. :)
Danke für die Tipps und für die hilfe.

Und ja ich hab das Voltmeter richtigrum angeklemt :)

Mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.