Forum: Mikrocontroller und Digitale Elektronik Bascom auslesen und zum PC übertragen


von M. Müller (Gast)


Lesenswert?

Hy Jungs,

ich bin noch ziemlich neu in der geschichte vom Atmel.

Zur Zeit besitze ich einen Atmel8 und habe bis jetzt eine led zum 
blinken gebracht :P
Nicht so Weltbewegend aber i.O.

Nun wollte ich über den AD Port eine Spannung messen und auslesen.

Die Spannung messen ist wohl nicht so das Problem, aber das auswerten.

Ich habe mir in meinem Jugendlichen Leichtsinn gedacht, das ich diesen 
wert der Spannung über die ISP Schnittstelle wieder übertrage und mit 
dem PC auslese.

Nur stellt sich mir die Frage wie ich das genau anstelle.
Kann mir da jemand vll. ne Anleitung oder irgendwas zum lesen (Deutsch) 
bereitstellen.

Bin wie gesagt am Anfang.

von Benedikt Patt (Gast)


Lesenswert?

Hi,
wieso über die ISP Schnittstelle? Die ist eigentlch nur zum 
Programmieren gedacht. Einfacher wäre es über die integrierte USART. 
Dann kannst du in Bascom, ich glaube mit Print, Ausgaben zum PC senden.

Gruß
Benedikt

von Tobi W. (todward)


Lesenswert?

genau...
du musst mit
1
var = get adc(1) 'für kanal 1
einer variable den adc wert zuweisen und dann
1
print var
den weert zum pc übertragen, vorrausgesettz du hast einen compurt am pc 
(ein USB2RS-232 wandler reicht auch)

du kannst aber auch den adc wert drekt ohne umweg über die variable 
ausgeben.
1
print get adc(1)

Es wird aber immer nur ein wert zwischen 0 und 1023 übertagen (wenn du 
ihn mit 10bit initialisiert hast). also keine tatsächliche spannung. Die 
spannung die anliegt kannst du dir aber mit einger gebenen referenz 
spannung ausrechnen.
Bsp.:
spannung pro bit = aref / 1024
tatsächliche spannung = spannung pro bit * adc

gruß
Tobi

von Weingut P. (weinbauer)


Lesenswert?

über ISP auslesen kannst Du nur, wenn Du die werte im
internen EEPROM speicherst und dieses dann ausliest.
Kann man so machen, ist aber eher "unüblich"
Über UART wie schon bescchrieben in Bascom dann Print
geht komfortabler.

von olli (Gast)


Lesenswert?

du kannst auch ziemlich einfach unter Bascom ein LCD-Panel anschließen 
und auf diesem die werte ausgeben. dann kannst du rechnerunabhängig 
messen.

ausserdem ist so ein LCD-teil äußerst praktisch beim programmieren, weil 
man darauf auch variablen usw. anzeigen lassen kann. so kann man 
überprüfen, was das programm grade macht.

von Tobi W. (todward)


Lesenswert?

@olli:
ist auch ne möglichkeit. Doch wenn man nicht mehr soviele I/Os frei hat 
ist blöd. Zum debuggen ist die UART besser geeignet. Aber da hat jeder 
glaubich so sein eigen.

@m. Müller:
Wenn du willst kann ich hier mal ein bsp-code posten oder wenn du willst 
auch per mail schicken.

Gruß
Tobi

von M. Müller (Gast)


Lesenswert?

bsp. Code wäre nett :) muss ich mich gleich mal über den uart 
durchlesen.. wusste gar nicht wo ich überhaupt anfangen soll mit lesen 
etc :P danke schonmal..

von Tobi W. (todward)


Lesenswert?

Hallo,
Ich habe mal einen kleinen Code zusammen gebastelt. Müsste eigentlich so 
laufen.
1
'###### Hier Muss Die Init Sequenz Für Den Controller Hin ######
2
3
'Baud auf 9600 setzen (standardeinstellung bei den meisten programmen)
4
$baud = 9600
5
6
'ADC konfigurieren
7
'Den prescaler ggf. selbst anpassen! imho legt der Compiler den Wert fest(optimalwert)
8
'Reference auch ggf. anpassen! Jetzt ist es auf AVCC also die spannungsversorgung des ADC eingestellt. AREF wäre für eine Varaible Spannung
9
'im Datenblatt steht wie hoch sie maximal und minimal sein muss
10
Config Adc = Sigle , Prescale = Auto , Reference = Avcc
11
12
'Variable für den ADC-Wert definieren
13
Dim Adc_wert As Integer
14
'Hilfsvariable für die ausgabe
15
Dim I As Byte
16
17
'Hier beginnt das Hauptprogramm!
18
'Die Ausgabe erfolgt im Sekundentakt für alle 6 Kanäle.
19
20
Do
21
For I = 0 To 5                                              'hier beginnt die For-Next-Schleife; Sie zählt von 0-5 hoch
22
  Adc_wert = Getadc(i)                                      'Der Variable wird wird der aktuelle Wert des Kanals i zugewiesen
23
  Print "Kanal " ; I ; ": " ; Adc_wert                      'Ausgabe des ADC-Wertes über die UART
24
  Print "+++"
25
Next I
26
Wait 1                                                      'eine Sekunde warten
27
Loop
28
29
30
End                                                         'Ende vom Programm
bei fragen einfach melden
gruß
Tobi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.