mikrocontroller.net

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


Autor: Axel Krüger (Gast)
Datum:

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

Autor: Tobias Schneider (Gast)
Datum:

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

Autor: Axel Krüger (Gast)
Datum:

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

Autor: Alex (Gast)
Datum:

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

gruß alex

Autor: Axel Krüger (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: crazy horse (Gast)
Datum:

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

Autor: Andi (Gast)
Datum:

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

Autor: Axel Krüger (Gast)
Datum:

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

Autor: Uwe Seidel (Gast)
Datum:

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

Autor: Axel Krüger (Gast)
Datum:

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

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.