Variable über Poti ändern

rubino

Neues Mitglied
09. Dez. 2013
2
0
0
71
Sprachen
Hallo,
arbeite mit Bascom Avr und möchte eine Variable " X " in einem Programm , über ein Poti verändern können.
Die Variable soll dabei einen Wert von etwa 1oo bis 5000 annehmen können.
Will damit eine einstellbare Pause zwischen Programmschritten ermöglichen.
Vielen Dank für eure Hilfe
rubino
 
Mit 'nem Poti willst Du 4900 verschiedene Werte sicher und genau einstellen können? 'N Präzisions-Spindeltrimmer, oder was?

Prinzipiell verfügen viele AVR über einen internen 10bit-ADC - Du hättest also erstmal 'ne mögliche Erfassung von 1024 Zuständen.
Mit ein paar Tricks könnte man versuchen, das ein oder andere Bit hinzugewinnen, aber ob das dann den Aufwand wert ist...
(zB indem man viele Werte mittelt, wobei das Poti aber keine konstante Spannung erhält, sondern eine Dreiecksspannung (welche man mit einem PWM erzeugen könnte) - Da mußte dann aber noch viel Hirnschmalz reinschmieren...)
Alternative wäre ein externer genauerer ADC.
Oder ein Drehimpulsgeber(?)
Oder was ganz anderes - kommt auch darauf an, was es konkret erreichen soll.
Wie sollen wo Deine "Pausen" erzeugt werden?
 
Hallo,

je nachdem wie genau man das benötigt würde ich den Wert vom ADC einfach entsprechend der Differenz von 100 bis 5000 (also 4900) strecken und dann mit nem Offset verschieben (also +100). Je nach Genauigkeit kann man dann den ADC mit 10Bit oder nur mit 8Bit laufen lassen.

Gruß
Dino
 
OK, ich hatte das so verstanden, daß er wirklich 4900 verschiedene Werte einstellen können will - dann reichen 10 Bit nicht.

P.S.: Willkommen im Forum!
 
Hi

OK, ich hatte das so verstanden, daß er wirklich 4900 verschiedene Werte einstellen können will - dann reichen 10 Bit nicht.
eigentlich konnte man noch garnix verstehen weil er noch nix gesagt hat :rolleyes: Ist also alles nur Vermutung.

ach ja ... auch von mir herzlich willkommen im Forum :flowers:

Gruß
Dino
 
Hmm...
...Die Variable soll dabei einen Wert von etwa 1oo bis 5000 annehmen können...
In der Tat - da stehen ja nur die Grenzen - welche diskreten Werte darin getroffen werden sollen, beziehungsweise wieviele steht nicht da...

Da hier bisher keine Rückmeldung erfolgte, neige ich langsam zu der Vermutung, daß das bereits woanders gelöst wurde...
 
Hallo,
vielen Dank erstmal,dass ihr euch mit meinem Problem beschäftigt habt.Also was will ich machen: ich habe einen Schrittmotor.diesen steuere ich mit einem Attiny 2313 und einem ULN2803 an. Die Wicklungen werden nacheinander zyklisch bestromt. damit die Drehzahl sich ändert,muß ich die Pausen zwischen den Schritten verändern können.Da ich mit dem Befehl " Waitms ...." nicht weiterkomme,habe ich eine Schleife mit einer Variable " X " nach jedem Schritt eingefügt.wenn nun " X " mit einem Poti, oder Drehimpulsgeber verändert werden könnte,müßte sich die Motordrehzahl eistellen lassen. Wenn ich den Wert von X zwischen 100 und 5000 im Programm ändere dreht der Motor dementsprechend langsam oder schneller.
Warscheinlich gibt es bessere Lösungen für das Problem, aber bedenkt bitte:habe erst begonnen mit bascom und atmel.
nochmals Vielen Dank

rubino
 
Nee, das ist schon ok, wenn man erstmal die unterschiedlichen Wege erkundet, die zum Ziel führen können. Welchen Du dann am Ende einschlagen willst, ist Dein Ding...

Wie gesagt: die meisten AVR besitzen einen integrierten 10-bit-ADC. Dieser verfügt über mehrere Steuer- und Statusregister. Das nimmt Dir aber Bascom wieder weitgehend ab (ach wenn ich Dir da diesbezüglich trotzdem das Datenblatt des Controllers als Lektüre empfehle) - zum initialisieren des ADC suche in der Bascom-Hilfe nach "Config ADC".
Die eigentliche Messung triggerst Du dann im Programm mit der Zuweisung "Variable=getadc(Kanal)". Die Variable muß dabei ein word sein (da 10 Bit), der Kanal dem zu messenden Beinchen (Datenblatt).
Das Ergebnis kannst Du dann nach belieben weiterverrechnen (per Multiplikation strecken, per Addition verschieben) - aber Du hast natürlich trotzdem nur 10 bit (also 1024) diskrete Werte als Ergebnis...

Ein anderer Weg (statt Deiner variablen Warteschleifen) wäre, einen (Hardware-)Timer zu verwenden.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)