mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe wegen Zähler Bascom


Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ich habe folgendes problem
Habe einen 90s8515 und möchte folgendes bewerkstelligen !
Für meinen Brunnen muß ich zum wasser immer PH mindernde Tabletten
zusetzen. dabei habe ich folgende werte 5 gramm und 10 gramm tabletten.
über eine originale steuerung wird das wasser gemessen und entschieden
wieviel gramm pro 24 std. zugegeben werden muß.
Nun mein Problem die Steuerung die fünf und 10 gramm impulse gibt ist
OK die andere die Dosiert ist defekt und das schon zum dritten mal.
Jetzt möchte ich das Problem gerne mit dem 90s8515 lösen.
ich brauche hilfe wie ich das machen könnte.
Von der steuerung bekomme ich low impulse (z.b. für 25 gramm wird immer
aufgerundet bekomme ich zwei impulse von 10 gramm und 1 impuls für 5
gramm)

Also sollte der atmel erst einmal die zwei eingänge adieren können.
dann kommt das ausführen also sollten auf  zwei ausgängen vom 90s8515
mit high pegel meie dosiermotoren gesteuert werden.
nach jeder Tablette wird durch eine lichtschranke ein high impuls zur
ausgabe bestätigt.
Und jetzt kommts wenn z.b. die  10 gramm tabletten leer sind was ja oft
der fall ist sollte der atmel also nach 15 sec. wenn vom 10 gramm motor
kein high impuls mehr kommt ist ja die 10 gramm tablette defenitiv leer
automatisch statt einer 10 Gramm 2 Stck 5 Gramm tabletten hernehmen.

Habe schon überal nach lösungen gesucht leider vergeblich.
Hoffentlich könnt Ihr mir helfen.

Danke im voraus
Gerold aus Essen

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das klingt alles ziemlich simpel - wo genau ist dein Problem?

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Mein problem liegt darin wenn er angefangen hat mit 10 gramm tablette
und möchte 5 Stck. davon auswerfen und hat nur noch 2 Stck.
er soll also wenn 15 sec. lang keine 10 gramm tablette kommt
automatisch den rest mit 5 gramm tabletten erledigen.

währe in diesem fall (gesamt 50 gramm)
2 stck. 10 gramm (dann leer)
6 stck  5 gramm (weil 10 gramm leer)

Für lösungen währe ich dankbar
Gruß Gerold

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das ist doch nun wirklich nicht schwer.

Einfachste If..Then Geschichte mit ner Warteschleife.

Schreib dir die Bedingungen einfach "umgangssprachlich" auf (Am
besten auf separaten Zetteln)

Am besten in der Groben unterteilung

Was muß gegeben werden und was ist schon gegeben.

Geben

Warten

Wenn nichts kommt abbrechen und auf neue Strategie
verzweigen.(Unterprogram)

Ansonsten Vorgang als Erfolgreich beenden und in Wartestellung gehen


-----------------------

Das Unterprogramm behandelt den lerren Schacht (in diesem Beispiel die
10g Tabeletten) und gibt an die Ausgabe die Order aus es eben mit den
5g Tabeltten zu machen.Dabei wird der Ausgabewert der 5g Tabletten mit
angegeben.


Das ganze läst sich natürlich generell auf alle Schächte (Es waren doch
5/10 und 20g ja ?) anwenden.

Nebenbei:
Ich weiß ja nicht was die einzelnen Größen kosten aber wäre es nicht
einfacher generell nur die 5g Tabletten zu nehmen ?


aus di9esen Reglen kannste schnell passende Proceduren und Bedingungen
ausarbeiten.

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Tableten sind im einkauf als VP um 10 Euro billiger .
Im Originalen wird das auch so gemacht.

Irgendwie fehlt mir der anschluß (Denkproblem)
Hier mal mein listing.
es kann hald nicht weitermachen wenn eine sorte leer ist.



$regfile = "8515def.dat"
$crystal = 8000000

Ddrb = 255 : Portb = 0
Dim A As Byte
Dim B As Byte

Do

Debounce Pind.0 , 1 , 5gramm_in , Sub
Debounce Pind.1 , 1 , 5gramm_out , Sub
Debounce Pind.2 , 1 , 10gramm_in , Sub
Debounce Pind.3 , 1 , 10gramm_out , Sub

Loop

5gramm_in:
Portb.0 = 1
Return
10gramm_in:
Portb.1 = 1
Return
5gramm_out:
Incr A
If A = 2 Then Gosub 5gramm_out1
Return
10gramm_out:
Incr B
If B = 1 Then Gosub 5gramm_out2
Return
5gramm_out1:
Portb.0 = 0
A = 0
Return
5gramm_out2:
Portb.1 = 0
B = 0
Return

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yo,so gehts auch nicht.

1.Die Variablen übernehmen zuerst die Zahl der jeweiligen Tabeltten.
2.Dann ausgabe der geforderten Sorte.
3.Warten bis die Tablette gefallen ist
4.Löschen des jeweiligen Zählers.

Bis jetzt geht das nur wenn auch noch ne Tabelette da ist.

Aber wenn keine kommt ist schicht und das Prog hängt.

Zwischen punkt 2 und 4 fehlt eine Warteschleife in der Punkt 3
ergebnislos abgebrochen wird und auf eine andere Sorte umgeschaltet
wird.(Also 2x5g statt 1x10g usw.).

Erst dann kann der Vorgang abgeschlossen werden.

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Danke erst einmal.

Irgendwie bekomme ich das  nicht hin .
Hallo Ratgeber hab versucht die Variablen als werte 5 und 10 gramm
zu setzen, aber dann funktioniert es auch nicht.
wie geht das löschen des jeweiligen Zählers ??

Gruß
Gerold

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, wenn der folgende Post niemand hilft :

Irgendwie habe ich nicht das Gefühl, dass sich hier schon mal einer
erst mal einen "Algorithmus" ausgedacht hat.
Deswegen folgendes :

Hole auszugebende Grammzahl -> g

solange (g > 20)UND(noch 20g Tabletten vorhanden)
  gebe eine 20g Tablette aus
  g = g-20
ende

solange (g>10)UND(noch 10g Tabletten vorhanden)
  gebe eine 10g Tablette aus
  g = g - 10
ende

solange (g>5)UND(noch 5g Tabletten vorhanden)
  gebe eine 5g Tablette aus
  g = g - 5
ende

falls g != 0 ALARM

Leider kann ich nicht sagen, wie man das in BASCOM implementieren
könnte, denn ich kann eigentlich mehr Assembler und C. Vielleicht
hilft's Euch ja trotzdem.

CU, Daniel

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Daniel
Jetzt müßte ich nur noch wissen wie ich das im bascom umsetzen soll ??

Danke Gerold

Autor: Freak Maier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hay Gerold
Hatte mal so etwas ähnliches vor zu machen,
leider auch ohne Erfolg.
Ich denke mit Bascom geht so etwas nicht.

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gerold

""Hallo Danke erst einmal.

Irgendwie bekomme ich das  nicht hin .
Hallo Ratgeber hab versucht die Variablen als werte 5 und 10 gramm
zu setzen, aber dann funktioniert es auch nicht.
wie geht das löschen des jeweiligen Zählers ??

Gruß
Gerold""

"Ratber" reicht ;)


Um da weiter was zu sagen fehlt mir einwenig der aufbau deiner anlage.


Ich kann nur vermuten das es sich um einen einfachen Dosierer mit
Schieber handelt (so ähnlich wie die Süsstoffspender) und das nicht
festgestellt werden kann wieviel Tabeltten noch vorhanden sind.

Desweiteren vermute ich mal das 3 Kammern da sind (5/10 und 20g)

Die Dosierung besteht vermutlich darin das der Entsprechende Schieber
einfach kurz betätigt wird und keine weitere Kontrolle vorgenommen
wird.

Ist das soweit richti ?

Weiter vermute ich das die Dosiereinrichtung nun der Controller
übernehmen soll und das eine Lichtschranke den Abwurf kontrollieren
soll.

auch richtig ?


Eine Skizze wäre nicht schlecht.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich könnte sowas auch nur in C machen.
Für die Reaktionszeit (15s) würde ich meinen Scheduler nehmen.
Denn Warten darf man ja nicht, sonst könnten einem weitere Impulse
durch die Lappen gehen.


Für das konkrete Programm währen aber noch sämtliche anderen
Zeitbedinungen notwendig:
- Eingangsimpulsdauer, Abstand zwsischen den Impulsen, Entprellen
notwendig ?
- Ausgangsimpulsdauer, Wartezeiten zwischen den Impulsen notwendig ?


Ich würde für jeden Typ einen extra Zähler nehmen, der die
Eingangsimpulse hochzählt.
Bei jeder Zeitüberschreitung zählt dann der 10g-Zähler -1 und der
5g-Zähler +2.
Und solange einer der beiden Zähler != 0 ist, werden die Tabletten
ausgegeben.


Peter

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ratgeber
Danke das Du mir helfen willst.

Ja stimmt die Dosiereinrichtung besteht aus einer art Spindel die von
einem 12 V Elektromotor angetrieben wird.
Hinten am Ausgang ist eine Lichtschranke die die tabletten zählt.
(ist ein Transistor dran und gibt bei jeder tablette einen High
impuls).
Solange am motor 12 Volt anliegen werden tabletten ausgeworfen.

Es sind drei verschidene größen von spindeln wegen der verschiedenen
Tabletten.


Die Meßschaltung die alle Stunde einmal das Wasser mißt (PH wert)
gibt auf drei verschiedenen leitungen einen High Impus (ca. 100 ms)
aus.
 5 gramm pin 1
10 gramm pin 2
20 gramm pin 3
40 gramm pin 4
50 gramm pin 5

dann währe da noch ein impulsausgang der je 5 gramm einen High Impuls
ausgibt(auch ca. 100ms). War bis jetzt nicht benutzt aber
Funktioniert.

Viele Grüße
Gerold

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei 1 Impuls je Stunde, darf man natürlich auch 15s verwarten.

Oben in den 25g-Beispiel klang es aber so, als ob 3 Impulse kurz
hintereinander kommen.


Peter

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter
Auch Dir Herrzlichen Dank.

Als Eingangsimpulsdauer ca. 100 ms pause auch ca.100ms Entprellen
müßte man ausprobieren kann aber glaube ich nicht schaden.

Am Ausgang (3 ausgänge) sind drei motore (ein motor je sorte) und je
eine lichtschranke ( eine lichtschranke je sorte) zählt die tabletten.



Gruß
Gerold

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter

Das währe der Impulsausgang der in der Original Steuerung nicht benutzt
wurde der je 5 gramm einen impuls ca. 100ms ausgibt.

Gruß
Gerold

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also darf ich das so verstehen das die 100ms für den Spindelantrieb
reichen um ne Tabeltte auszuwerfen oder ist das nur der Startimpuls für
ne weitere Elektronik die den Motor steuert ?

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ratgeber

nein 100 ms ist der eingangswert von der Meßsteuerung.

also der MC bekommt eine ansteueung von ca. 100 ms.

entweder so

 5 gramm pin 1
10 gramm pin 2
20 gramm pin 3
40 gramm pin 4
50 gramm pin 5

oder

Impulsausgang (auch ca. 100ms) pin 6
gib je 5 gramm einen impuls aus .




die Ausgangszeit ist verschieden (ca. 1 - 5 sec) und wird von der
lichtschranke gezählt.


Gruß
Gerold

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yo,gut.

Ich schau mal ob ich was zusammenbekomme damit wir ne gemeinsame Basis
haben.

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yo,bin bis jetzt noch nicht dazu gekommen aber ich hab da noch ne
frage.

Werden bei der Ursprünglichen Anlage die Tabletten komplett einzeln
abgearbeitet oder kommen die impulse schnell und werden aufaddiert ?

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ja werden einzeln abgearbeitet .
Wartete immer auf signal von der auswurf Lichtschranke die die
tabletten registriert, erst wenn eine tablette registriert wurde
wird die nächste ausgeworfen.

Gruß
Gerold

P.S.
Danke für die Hilfe

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha,es werden also "generell" nur Einzelimpulse abgearbeitet.

Den Rumpf hab ich schonmal.
bis denne

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So !

Erstmal sorry wegen der Verzögerung (Is schhließlich nur ne Halbe
stunde Tipperei mit Komentaren) aber es ist mal wieder Dezember und
alle spielen verrückt (Vorallendingen die Kunden).

Hier mal was zum Probieren.
Ich hab versucht aus den Angaben herauszulesen welcher Natur die
Schaltung ist.
Wennes nicht stimmt dann mußte nochmal erklären wie der automat
ursprünglich funktioniert und welche Signale er liefert und welche er
braucht.

(Cut here)
------------------------------------------------------------------------ 
--------------------


'*********************************************************************
'Ich gehe von folgender Beschaltung aus.
'
'
'Pin D0  5g Eingangsimpuls
'Pin D1  5g Bestätigungsimpuls (Lichtschranke)
'Pin D2 10g Eingangsimpuls
'Pin D3 10g Bestätigungsimpuls (Lichtschranke)
'Pin B0 Motor  5g
'Pin B1 Motor 10g
'
'
'Die Variablen hab ich in anlehnung an ihre Funktion benannt
'
'Also "G" für die geforderten Gramm die noch ausstehen.
'"M" und "N" als Merker dafür das ein Vorgang läuft bzw. das die
Zeit überschritten ist.
'"Fehler" um anzuzeigen das ein Fehler aufgetreten ist und man ihn
dann auch behandeln kann.
'"Zeit" und "Zeitverstrichen" sind für die Warteschleife da.
'Ein Zeitüberlauf ist erst nach einigen Jahrtzehnten gegeben. gg
'
'Das Programm ist nur ein Vorschlag.
'Sicher kann man es noch optimieren aber erstmal muß es funktionieren
'Deswegen hier nur ein grobes Gerüst.
'Ich habe es absichtlich nicht zuweit Paralellisiert da es ja
offensichtlich eh nur alleine läuft.
'Desweiteren hab ich es einfach gehalten damit man auch einfach folgen
kann.
'Dh. das Bedingungen einfach gehalten wurden und nicht Kaskadiert
sind.
'
'Schreibfehler sind natürlich nicht beabsichtigt.
'Ich hab das Programm nicht getestet da mein letzter Controller gerade

'seine Testphase durchläuft
'(Langzeitstabilität.Naja wenigstens für eine Woche)
'
'Soweit es nötig war und soweit ich es auch nicht vergessen habe sind
die
'wesentlichsten Punkte Komentiert damit man leichter nachvollziehen
kann was läuft.
'*********************************************************************

'Definitionen

$regfile = "8515def.dat"
$crystal = 8000000
Enable InterruptsConfig Clock = SoftConfig Debounce 35

Dim Zeit as Long
Dim Zeitverstrichen as LongDim G as Byte
Dim M as Byte
Dim N as Byte
Dim Fehler as Byte

'Grundeinstellungen
'(Aus reiner Vorsicht.Man weiß nie was unterschiedliche Compiler
jeweils anders machen)

G=0
M=0
N=0
Fehler=0

'Hauptroutine

Do

Debounce Pind.0 , 1 , 5gramm_in , Sub
Debounce Pind.1 , 1 , 5gramm_out , Sub
Debounce Pind.2 , 1 , 10gramm_in , Sub
Debounce Pind.3 , 1 , 10gramm_out , Sub
If M=1 then Gosub Zeitlimit
If M=2 then Gosub Zeitlimit
If N=1 then Gosub Zeitueberschritten
'If Fehler=1 then Gosub.........Diese Zeile würde den Sprung für die
Fehlerbehandlung beinhalten.

'Die getrennten Werte für M sind damit man unterscheiden kann welche
Sorte gerade läuft.
Loop






5gramm_in:

G=G+5
Portb.0 = 1 '5g Motor an.
Zeit = SysSec() 'Zeitstempel holen.
M=1 '5g Behandlung läuft.
Return


10gramm_in:

G=G+10
Portb.1 = 1 '10g Motor an.
Zeit = SysSec() 'Zeitstempel einholen.
M=2 '10g Behandlung läuft.

Return


5gramm_out:

G=G-5
If G=0 Then Portb.0 = 0 '5g Motor aus.
M = 0 'Alles erledigt.
Endif

Return

10gramm_out:

G=G-10
If G=0 Then Portb.1 = 0 '10g Motor aus.
M = 0 'Alles erledigt.
Endif

Return


Zeitlimit:
If SysSecElapsed(Zeit) >15 Then N=1 'Wenn länger als 15 Sekunden nix
kommt dann anderen Weg suchen.
'Ich habe hier mal 15 Sekunden als Zeitlimit genommen.Kann beliebig
angepasst werden.Return


Zeitueberschritten:

If M=1 Then Fehler=1 'M=1 zeigt an das die 5g alle sind also geht auch
nix mehr.
M=0 'Die 5g Behandlung wird gelöscht.
N=0 'Die Zeitüberschreitung wird gelöscht.
Endif

If M=2 Then M=1 'Die Behandlung wird von 10g auf 5g umgestellt da die
10g leer sind.
Portb.1 = 0 '10g Motor aus.
Portb.0 = 1 ' 5g Motor an.
Endif

Return.


'Hier könnte jetzt noch die Fehlerbehandlungsroutine stehen.
'Zb. kann nur ein Text auf nem Display ausgegeben werden oder auch
zusätzlich nen Alarm.
'
'Sicher,es gibt mit weitere nRoutinen und meßeinrichtungen genügend
möglichkeiten genauer festzustellen
'"was" nicht stimmt aber das ist hier nicht mein Bier.
'
'Desweiteren habe ich bei einem leeren 5g Dosierer den Auftrag
letztendlich storniert.
'Man könnte natürlich die Dosierung bei Zeitablauf
einstellen,speichern und in Intervalen oder auf Tastendruck
'neu versuchen wenn es einen Alarm gibt und jemand es nachfüllen
würde.
'Dann kann man abhängig von der aufgelaufenen Dosierung von oben
anfangen und die Teilung dann 'nach unten weitergeben.
'
'Aber wie ich schon oben sagte ist das Programm nur eine Möglichkeit
das Problem zu lösen und ich hab mir auch keine
'übergroße mühe auf einen Coolen Programierstil gegeben oder gar bis
ins kleinste Eck Zeit rausgeschunden.
'Einfach mal frei von der Leber weg.
'
'Da ich es nicht testen kann übernehme ich keine Verantwortung für
Schreib- ,Logische- oder Syntaxfehler.
'Zumindest der Grundgedanke sollte rauszulesen sein.
'
'
'
'Und nun kommt das was immer kommt !
'
'
'   The.......


End

------------------------------------------------------------------------ 
---------------------
(Cut here)

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow
Das höhrt sich ja Super an .

währe ja jetzt schon genauso gut wie das original.

Ja display währe vieleicht nicht schlecht wo man sieht
am anfang wieviel ausgeworfen werden soll, und alles abgezogen wird was
schon ausgeworfen worden ist also zum schluß wenn alles OK war muß
wieder 00 am display stehen.

Dann währe es sogar noch besser als das original.


Habe es gerade im bascom versucht, bringt mit aber 4 Fehlermeldungen.

Habe ich das was falsch gemacht ??

Vielen dank und Gruß
Gerold

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung.
Ich kann von hier aus nicht in deinen Rechner sehen also weiß ich auch
nicht welche Fehlermeldungen du hast.

Wie gesagt hab ich das Program nicht getestet weil ich derzeit keine
Hardware zur verfügung habe.
Du mußt dir den Rest schon selber anpassen.

Autor: Gerold (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ratgeber
Bis zur Hardware bin ich noch nicht gekommen.

Den fehler bekomme ich schon im bascom.
Hier nochmal das File als anhang,
kannst Du nochmal schauen was ich da falsch gemacht habe.

Viele Grüße
Gerold

Autor: Ratber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Mein Name sollte doch lesbar sein oder ?

Zum Programm.

Irgendwie war das nicht so die gute Idee das Prog in die Nachricht zu
setzen.

Einige Zeilenvorschübe sind flöten gegangen (Bei Config und den "If
Then")

Die Fehlermeldungen sind soweit weg aber da dein Controllertyp die
Timersteuerung nicht kann fallen alle befehle zur Zeiterfassung unterm
Tisch.

Lad dir mal die Korrigierte Fassung und versuch zu übersetzen.

Zeile 4 mit "Config Clock = Soft" wird nicht genommen da der 8515 das
nicht unterstützt.

Damit mußte dir die Zeiterfassung anders stricken.

Viel Spaß

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ratber
Ja stimmt Sorry wegen meiner Namensverwechslung,
hab wieder mal nur überflogen und das passiert mir das öfter.

Ja stimmt jetzt würde es gehen bis auf die
Config Clock = Soft
Nur schade das ich die schaltung schon fertig habe,
8515 ist aber gesteckt, könnte ich den nicht gegen einen pinkompatiblen
austauschen ??
Würde der AT Mega 8515 gehen ??
Könnte notfalls die schaltung auch nochmal Neu machen.
Welchen AVR würdest Du nehmen ??

P.S.
Bin echt froh wenn das teil mal wieder automatisch funktioniert denn
ich laufe momentan alle 1-2 Stunden im Keller und mische mit der Hand
hinzu auf einer Led Platine kann ich die ausgegebenen Impulse lesen und
dann bin ich der Mischer . (Nervt mich schon ganz schön)


Gruß
Gerold

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein 8535 würde gehen

Aber du brauchst nicht gleich nen neuen Controller zu nehmen.

Wenn die Softclock nicht geht dann machen wir es eben etwas Infantiler
per Zähler.
Ist nicht so bequem aber funktioniert auch.

Da ja M auf 1 oder 2 Gesetzt wird können wir un der Subroutine
Zeitlimmit einfach un ergreifen bei jedem durchlauf einen Zähler
raufzählen.

Der Rest bleibt dann wie gehabt.

Natürlich hängt die Zähldauer vom Takt ab so das man etwas
Experimenteiren muß aber es geht.

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Höhrt sich gut an .
Hab mich schon damit abgefunden gehabt die schltung neu mit anderem avr
aufzubauen.
Aber da ich ja schon alles fertig habe ist mir eine programmänderung am
liebsten.

Gruß
Gerold

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muß morgen eh meine beiden anderen Kisten umpartionieren was für
reichlich Wartezeit sorgt da ich die Daten nicht verlieren will also
kann ich dann auch mal schnell am Programm stricken.
Dürfte ne Sache von einigen Minuten sein.

Bis denne cu

Autor: Ratber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So,schsu mal hier.

Den finalen Wert für Z mußte selber rausfinden.
als LONG dürfte das kein Problem sein.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Hab mich schon damit abgefunden gehabt die schltung neu mit anderem
avr
aufzubauen."


Also, daß der 8515 nicht ausreicht, kann ich gar nicht glauben.
Im Gegenteil, der ist doch sogar noch hoffnungslos unterfordert.
Ein 90S2313 oder Tiny26 tuts dicke.


Wenns Dich interessiert, könnte ich das in C (WINAVR)
zusammenstricken.

Ist bloß nicht so einfach Deine Angaben in einen PAP umzusetzen:

Was passiert z.B. wenn ein Behälter leer ist ?
Sollen dann die Motoren ewig weiterlaufen ?
Soll eine Leer-LED das anzeigen ?
Man bräuchte wohl noch einen Taster, um nach Wiederbefüllung neu zu
starten.
Was passiert, wenn die 5g zuerst alle sind ?
Soll dann beim 2. 5g-Impuls eine 10g ausgeworfen werden ?


Peter

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ratber
Danke habs versucht aber scheint noch nicht ganz zu funktionieren,
Irgendwie werden ab und zu die Impulse am eingang übersehen.
Aber das Grundprinzip scheint richtig zu sein. Werde noch ein bischen
rumexperimentieren.

Hallo peter dannegger
Danke erst mal, Natürlich bin ich auch an einem C Programm
Interessiert.
Wenn ein Behälter leer ist sollte er wenn es geht auf einen anderen
Wert ausreichen und wenn es der 5 gramm ist, soll beim 2. 5g-Impuls
eine 10g ausgeworfen werden.
Motore sollen maximal 15 sec. laufen und dann der wert als leer
angesehen werden. (im zweifelsfall soll aber nie mehr ausgeworfen
werden, Tabletten sind Teuer)
Eine leer led und ein taster währen natürlich nicht schlecht.
Super währe natürlich ein LCD das den auszuwerfenden wert anzeigt und
gleich immer den ausgeworfenen wert abzieht.
Da könnte man am display sehen was noch abgeht.

Vielen Dank euch beiden für die bereits geopferte zeit.

Danke
Gerold

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gerold

Ja,das ist entweder die Impulsformung oder die Tablette wird nicht
erkannt.

Kann ich wegen unkentnis der Harware nicht sagen.

Das Programm ist natürlich nur ein Vorschlag.


@Peter

Der 8515 reicht da vollkommen.
Eigewntlich rewicht jeder MC mit genügend Portpinnen und etwas Speicher
bei 1 Mhz.

Die "Behälter Leer" Geschichte hab ich ja oben schon angedeutet.
Was geschehen soll das muß er selber
entscheiden.(Lampe,Tröte,Speicherung bei Intervallmäßigen
Wiederholungen oder per Tastendruck nachdem man nachgefüllt hat.)
Möglichkeiten gibt es viele und man kann die anlage fast beliebig
erweitern (Vieleicht eine art Füllstandskontrolle die schon vorzeitig
alarm schlägt wenn wenig Tabletten vorhanden sind usw.)

Das Programm oben ist ja nun nicht gerade Kompliziert und die
Aufgabenstellung auch nicht.

@Nochmal Gerold

Vieleicht solltest du der Lichtschranke einen Impulformer verpassen
damit auch kurze Signale zuverlässig erfasßt werden können.

Wie gesagt ist die Ausführung nicht so wild wenn feststeht was
gefordert ist.

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles Klar Danke

Werde mir morgen nochmals einen genaueren ablauf plan erstellen,
aber wie gesagt es ist ein eigenes projekt das mit sicherheit
verbessert werden kann. (Und auch soll)
Wahrscheinlich wenn wir mal fertig sind wird es so eine gute
Wasserqualitätssteuerung nich einmal zu kaufen geben.  g

Gruß
Gerold

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei der Code in C.

Ich hoffe, die englischen Kommentare sind verständlich.

Alle Signale sind als Low-Aktiv definiert, kann man aber leicht
ändern.

Wenn Du nicht den WINAVR downloaden willst, kann ich Dir auch noch das
fertige Hex geben.


Peter

Autor: Ratber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab eben entdeckt das ich bei der Umstellung auf nen Zähler als
Zeitmessung etwas mist gebaut habe.

Da ja vom ursprünglichen Automaten alle Stunde neneue messung
vorgenommen wird und damit vorher nicht gegebene Tabletten automatisch
über den dann stärker abweichenden PH-Wert korrigiert werden ist es
natürlich Sinnvoll das das Programm bei nem Fehler den Tablettenzähler
nulliert.

Hab ich hiermit behoben.

Desweiteren war da noch nen Fehler bei der Übergabe von 10 auf 5g
wodurch der Zähler nicht mehr ging.

Ist auch behoben.

Ich habs durch den Simulator gejagt.

Jetzt macht das Programm das was es eigentlich sollte.

Probiers mal.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich habs jetzt auch noch auf dem STK500 getestet.
Läuft alles genau so, wie ich es verstanden habe.

Hier ist noch eine kleine Berichtigung, CS11 darf natürlich nicht
gesetzt werden:


  TCCR1B = 1<<CTC1^1<<CS12^1<<CS10;             // divide by 1024
                                                // clear on compare


Peter

Autor: Gerold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ratber und peter dannegger
Habe beide Files getestet und beide funktionieren Wunderbar.
Bin absolut begeistert und Happy.

Vielen Dank für die Hilfe
(ohne Euch würde ich immer noch alle 2-3 Stunden im Keller laufen,
währt Ihr in meiner nähe würde ich Euch zu einem Bier einladen.)

Da das alles so Super Funktioniert habe ich mir bei Ebay heute einen
neuen Dosierer ersteigert (51€)
Der Neue Dosierer kann 500 Tabletten aufnehmen.
Das würde ca. 1 Monat reichen (der alte kann 80 aufnehmen)

Ich hoffe das dann alles mit dem Neuen auch so gut Funktioniert.

Wünschen würde ich mir noch die sache mit dem Display.
(Purer Luxus g)

Also nochmal vielen Dank Euch beiden.

P.S.
Darf ich mich nochmal melden, wenn der Neue Dosierer probleme macht ?
(irgend etwas anders ist)

Gruß
Gerold

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yo,kein Problem.

Wenn de mal nach Düsseldorf kommst dann kome ich auf dein Angebot
zurück gg

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.