www.mikrocontroller.net

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


Autor: M. Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt Patt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi W. (todward)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau...
du musst mit
var = get adc(1) 'für kanal 1
einer variable den adc wert zuweisen und dann
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.
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

Autor: Weingut Pfalz (weinbauer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tobi W. (todward)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: M. Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Tobi W. (todward)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe mal einen kleinen Code zusammen gebastelt. Müsste eigentlich so 
laufen.
'###### Hier Muss Die Init Sequenz Für Den Controller Hin ######

'Baud auf 9600 setzen (standardeinstellung bei den meisten programmen)
$baud = 9600

'ADC konfigurieren
'Den prescaler ggf. selbst anpassen! imho legt der Compiler den Wert fest(optimalwert)
'Reference auch ggf. anpassen! Jetzt ist es auf AVCC also die spannungsversorgung des ADC eingestellt. AREF wäre für eine Varaible Spannung
'im Datenblatt steht wie hoch sie maximal und minimal sein muss
Config Adc = Sigle , Prescale = Auto , Reference = Avcc

'Variable für den ADC-Wert definieren
Dim Adc_wert As Integer
'Hilfsvariable für die ausgabe
Dim I As Byte

'Hier beginnt das Hauptprogramm!
'Die Ausgabe erfolgt im Sekundentakt für alle 6 Kanäle.

Do
For I = 0 To 5                                              'hier beginnt die For-Next-Schleife; Sie zählt von 0-5 hoch
  Adc_wert = Getadc(i)                                      'Der Variable wird wird der aktuelle Wert des Kanals i zugewiesen
  Print "Kanal " ; I ; ": " ; Adc_wert                      'Ausgabe des ADC-Wertes über die UART
  Print "+++"
Next I
Wait 1                                                      'eine Sekunde warten
Loop


End                                                         'Ende vom Programm
bei fragen einfach melden
gruß
Tobi

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.