Forum: Mikrocontroller und Digitale Elektronik Ist sowas mit den Atmel8 möglich?


von Axel Krüger (Gast)


Lesenswert?

Hallo!
Ich habe mich nun doch entschlossen ein komplette einsteigerset zu
kaufen mit ATmega8-Mikrocontroller

Nun meine Frage da ich schonmal mein Visual BAsic Quelltext fertig
schreiben will

Der ATmega8-Mikrocontroller  soll folgendes können:

Die Zeit zwischen den Drehzahlimpulsen vom Motor lesen und entsprechend
der Motor drehzahl 10 Ausgänge schalten.

Mein Quelltext basiert auf folgendes schema ( Nur halt 10 statt 8
Eingänge , weil 8 wären zu ungenau):

Eing1 = A
Eing2 = B
Eing3 = C
Eing4 = D
Eing5 = E
Eing6 = F
Eing7 = G
Eing8 = H

If A = 0 Then
If B = 0 Then
If C = 0 Then
If D = 0 Then
If E = 0 Then
If F = 0 Then
If G = 0 Then
If H = 1 Then
i = 600 (Das sollen die rpm sein)


8 x End If

If A = 0 Then
If B = 0 Then
If C = 0 Then
If D = 0 Then
If E = 0 Then
If F = 0 Then
If G = 1 Then
If H = 0 Then
i = 625 (Das sollen die rpm sein)


8 x End If


Ist das Grundsätzlich damit realisierbar oder kann man von vornherein
sagen das geht nicht, denn das belegt doch bestimmt viel
Programmspeicher im Chip  denn ich muss ja sagen: Wenn die Zeit
zwischen x und y dann schalte ausg1,2,3,8,9 auf eins und die anderen
auf null  ---> und das ganze 1024 mal

mfg axel

von Tobias Schneider (Gast)


Lesenswert?

Hi,
ich habe keine Ahnung was diser Quellcode bewirken soll, aber hast du
schonmal in einer strukturierten Programmiersprache gearbeitet? Ich
meine nicht VB!

Es gibt naemlich so Dine wie logische Opertion und Schleifen ...

Gruß Tobias

von Axel Krüger (Gast)


Lesenswert?

aber es sit prinzipiell erst einmal möglich oder? Weil ich habe keine
lust das das nachher umsonst ist was ich in vb mache

von Alex (Gast)


Lesenswert?

also grundsätzlich ist das erfassen von drehzahlimpulsen eines motors
mit dem mega8 möglich ... schnell genug ist er...

gruß alex

von Axel Krüger (Gast)


Lesenswert?

und kann er das dann auch auf 10 Ausgänge "umsetzen" sodass ich die
daten in meinem VB Programm auswerten kann?

sorry das ich das jetzt schon frage wo ich mich überhaupt noch nicht
eingearbeitet habe, aber dann kann ich schonmal mein prog
weiterschreiben welches 10 Eingänge vom Parallelport alle 40 ms abfragt

von Peter D. (peda)


Lesenswert?

Nimms mir nicht übel, aber ein so extrem umständlicher Ansatz ist mir
noch nie unter die Augen gekommen, stehst Du mit Mathe denn derart auf
Kriegsfuß ?

Daß Du 512MB RAM hast, muß doch nicht heißen, daß Du die alle mit
Deinem VB-Programm belegen mußt.

Du willst doch nicht im Ernst 10240 IFs schreiben.

Hast Du schonmal was von Binärzahlen gehört ?

Addiere einfach alle Bits entsprechend ihrer Zweierpotenz und
multipliziere das Ergebnis dann mit Deinem Umrechnungswert.


Am einfachsten ist es aber, den ATMega8 den Wert gleich als Text über
die UART ausgeben zu lassen und über die COM (bzw. COM-USB-Adapter) in
Dein VB-Programm einzulesen.


Peter

von crazy horse (Gast)


Lesenswert?

kannst du machen, der AVR wird nicht der begrenzende Faktor der ganzen
Sache sein, es sei denn, man lässt embedded_windows_avr drauf laufen,
dann kann es schon mal zum blue chip kommen oder dass er sich ab und zu
für ein paar Sekunden tot stellt.

von Andi (Gast)


Lesenswert?

Warum fragst Du nicht in deinem VB-Programm (mit Spannungsteiler oder
über Transistor) einen Eingang mit dem Drehzahl-Signal ab?
Zwischen 2 hi- oder low-Pegeln kannst Du mit "X=Time" die
Zeitdifferenz ermitteln.
Ansonsten geht eine Zeitabfrage von Millisekunden über die
DirectX-Bibliothek.

MfG
Andi

von Axel Krüger (Gast)


Lesenswert?

Guten Morgen

Ich habe ja auch drüber nachgedacht direkt über lpt die zeit zumessen
aber dafür sind 1 ms viel zu lahm.

von Uwe Seidel (Gast)


Lesenswert?

Also die Lösung vom Peter ist wohl die Eleganteste.
Schnell den Controller die Zeit messen lassen und direkt über seriell
an den Pc. Fertsch. Dann kannst du im klicki-bunti-VB schnell die Werte
anzeigen und gut ist.

Der parallele Port ist sehr anfällig gegen Kurzschluß und
Überspannung.
Ist nicht böse gemeint, aber wenn die Elektronik am LPT so ausssieht
wie dein geplanter Code, würde ich mir das nochmal überlegen....

Ciao
Uwe

von Axel Krüger (Gast)


Lesenswert?

also übergebe ich die drehzahl direkt über die UART  als zahlen in ascii
code  da muss ich doch nur die bitrate im Microcontroller einstellen
inkl. das stoppbit definieren (Z.b. pegel auf high oder low legen um
die 1,5 fache zeit wie standard )und in meinem prog genau die gleichen
parameter einstellen. Über das COM-Control sollte das ja kein Prolem
darstellen in vb

mfg axel

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.