Ok,
Meten is weten.
Ik ga kijken welke waarde de storing het best onderdrukt.

De spoel moet een zo laag mogelijke DC weerstand hebben, en een zo hoog mogelijke impedantie op hoge frequenties. Een RF bead is daarvoor gemaakt.
Zoals @rew reeds zei, is een 100nF (soms werkt 47nF zefs nog beter) geschikter voor korte impulsen. (Bij microcontrollers ligt het schakelen nu eenmaal in de MHz)
Voor de OpAmp is 10uF wel heel geschikt, omdat daar traag wisselende spanningen optreden. (hoewel een extra 100nF erover nooit kwaad kan)

Bedenk wel Arco,
het gaat hier om een storing veroorzaakt door het schakelen van de spoelen van het stappenmotortje.
Dat gaat met een PWM signaal van 20 kHz.
Niet zo'n erg hoge frekwentie dus.
Het beste zou zijn om drie condensatoren parallel te schakelen:
10uF, 100nF en 10nF
Helaas is daar geen plaats voor.
Als het moet kan ik ze wel boven op elkaar solderen.

Groeten Joop

Ik zou dan beginnen met de 10nF en 100nF.

Blijft de meter/motor nu op de laatste meting staan als de voedingsspanning er af gaat?
Voor een brandstofmeter kan ik me voorstellen dat dit handig is maar andere metingen wil je terug naar 0 brengen. Bijvoorbeeld het toerental van een automotor.
Hoeveel capaciteit heb je nodig om de meter terug naar nul te draaien? D5 voorkomt dat C2 leegloopt naar de verkeerde kant. Als je C2 vergroot en met een van de i/o pennen van de uC de voedingspanning meet dan is het verder alleen maar software om die extra functionaliteit in te bouwen.

De storing op Vdd is meestal in de MHz. Tenslotte kan het stroomverbruik bij iedere klokcycle veranderen.
In dit geval moet ook de motorstroom nog rechtstreeks uit de PIC komen, wat de zaak verergert. Een extra drivertje was beter geweest.

Hallo Hennep.

Het stappen motortje blijft inderdaad staan als de spanning uitgeschakeld wordt.
Ook voor een voltmeter is dat eigenlijk niet gewenst.
De oplossing is niet zo eenvoudig zonder extra componenten.
De 12volt moet eerst gereduceerd worden zodat de PIC ingang
niet boven de voedings spanning uitkomt.
Dan moet de condensator groot genoeg zijn om tijdelijk de voeding over te nemen..
Waarschijnlijk is een SMD condensator niet groot genoeg.
Ik moet daar nog over na denken.

Daarom vroeg ik hoeveel capiciteit heb je nodig hebt. Je zou dat proefondervindelijk kunnen vaststellen met een uC en het motortje.
Als je de beide leds naar de andere kant van D5 verhuist, scheelt dat al ca. 8 mA.
De capaciteit vergroten tot het maximum wat je kwijt kunt en mogelijk op andere plekken een of meerdere c-tjes parallel zetten.

Het is een uitdaging, prutsen op een paar vierkante cm.

Op zich is het wel gunstig dat er 12V op de bufferelko staat. Dat geeft je iets meer tijd dan met 5V.

Ok,
Dat ga ik proberen.
Er is nog wel een ingang vrij op de controller.
Voor de software is het geen probleem.
Hopelijk is er genoeg capaciteit.
De led's probeer ik te verplaatsen.

Groeten joop...

Hier staat het nieuwe schema:
http://www.joopangelier.nl/download/Stappenmotor/schema.png

[Bericht gewijzigd door joopoldenzaal op (12%)]

Ik zie dat je alle 100n condensatoren uit het schema hebt verwijderd. Ik heb de discussie hierover niet gevolgt maar zou er zeker eentje laten zitten zo dicht mogelijk bij de voedingspennen van de controller.
Ik heb al meerdere keren met controllers te maken gehad die rare problemen vertoonden als ik de ontkoppel-C vergat.

Met de 10k weerstand tussen de 12V en RA1 gaat er ongeveer 1 mA lopen via de diode naar de 5V. Dat is geen enkel probleem omdat de instelweerstanden van de lm317 dat weer afvloeien naar massa.
Maar wat als je tijdens het opbouwen de juiste weerstanden voor de LM niet kunt vinden en hoogomiger typen kiest. De soldeerpadjes zouden allemaal open kunnen zijn. Murphy's wet is genadeloos, als iets fout kan gaan dan...
Ik zou er 100k inzetten, daarmee vloeit er nog maar 100 uA naar de 5V.

De ad8227 gebruikt 350 uA typical en de PIC 30nA in sleep mode. Je blijft met 100 uA daar altijd ruim onder.

EDIT NA: 14 juni 2013 12:17:59
Zorg er in ieder geval voor dat je met de stroom door R17 altijd onder het minimumverbruik van de schakeling blijft. Met 33k zit je nog steeds onder 350 uA van de ad8227

In het schema staat bij C3 en C4 10uF.
Ik moet nog uitzoeken welke waarde de beste storings onderdrukking geeft.
Misschien veranderen ze nog in 100nF.
Of eventueel 10uF en 100nF parallel.

R17 kan ik verhogen.
Ik wil die echter niet heel hoog maken omdat de ingang dan storings gevoeliger wordt.

Youtube video: https://www.youtube.com/watch?v=9KiiZ14noPM

Ik stuur hem nu aan met een 100 Ohm potmeter zoals voor een vlotter
gebruikt word.
Na het inschakelen gaat de wijzer eerst naar de linker aanslag,
daarna naar de gemeten waarde.

Joop....

Dat ziet er toch goed uit Joop, of mis ik iets.

Op het breadboard staat de wijzer soms te trillen.
Het printje heeft er geen last van.
Ik ga er van uit dat de lange draden op het breadbord het probleen zijn.
Maar er komt toch een nieuwe print met verbeteringen voor de voeding.

Schema: http://www.joopangelier.nl/download/Stappenmotor/schema.png
de 100nF heb ik er ook in gezet.

De referentie moet intern 4,1 Volt worden.
Ik meet nu 40mV storing op de voeding van de controller.
Dat is bij 10 bit's conversie 8 op de 1024 met de ref op Vdd.
Dat is veel te veel.
De storing op de versterker is 2mV en dat is minder dan 1 bit.
Dat is geen probleem.
Het programma moet aangepast worden.

Groeten Joop....

De software is aangepast.
We gebruiken nu de interne referentie.
De filters onderdrukken de storing nu goed.
Een 10uF is echt nodig.
Alleen een 100nF gaat echt niet.
Voor de controller gebruik ik nu beide parallel.

Een detail dat nog opgelost moet worden is het constant draaien
van het motortje.
Dat komt omdat de A/D converter altijd een bit staat te klapperen.
Daardoor draait het motortje altijd heen en weer op dezelfde plaats.
Daardoor kan veel meer slijtage optreden dan nodig is.
De software moet de wijzersnelheid aanpassen aan het verschil tussen
de gewenste en de actuele positie.
Een groot verschil is dan een snelle verplaatsing.
Een klein verschil is een langzame verplaatsing.
Als de wijzer bijna goed staat gaat hij dan heel langzaam bewegen
b.v. maar 1 microstep per seconde.
Dat moet de slijtage verminderen.

Voor het naar nul gaan als de spanning wegvalt wil ik een ultra cap
gebruiken van b.v. 1 fahrad.
Die zijn niet duur en moet een paar seconden de 5 volt in stand houden.
Zou ik de stroom voor de ultra cap moeten begrenzen met een weerstand om de spannings regelaar te beveiligen?
En een diode om de ingang spanning niet lager te maken dan de uitgangs spanning?

Groeten Joop....

Op 24 juni 2013 16:56:43 schreef joopoldenzaal:
Een detail dat nog opgelost moet worden is het constant draaien
van het motortje.
Dat komt omdat de A/D converter altijd een bit staat te klapperen.

Kun je dat bit niet direct na het inlezen van de adc op 0 zetten?

Voor het naar nul gaan als de spanning wegvalt wil ik een ultra cap
gebruiken van b.v. 1 fahrad.
Die zijn niet duur en moet een paar seconden de 5 volt in stand houden.

Je hoeft niet met microsteps naar 0 terug te draaien. Dat zal toch toch niet met een ultracap hoeven. Hoe lang zal dit duren, <100 ms?

EDIT:

Ik heb even een simulatie gemaakt met 100uF en een stroombron van 18 mA. Om een idee te krijgen van de ontlaadtijd.
100uF ontlaadt met 18mA in 50ms onder de 5V
Het gaat je inderdaad niet lukken met 10uF :-)

EDIT2:
http://hennep.xs4all.nl/elec/Ontladen_100uF.png
De spanning is natuurlijk geen 12 maar iets meer dan 14V.
Met 330 uF heb je 200ms bij 18 mA. De vraag is nu wat kun je kwijt in die kleine blikken trommel?

Kun je dat bit niet direct na het inlezen van de adc op 0 zetten?

Dat heb ik geprobeerd.
Helaas helpt dat niet.
Of je nu 8, 9 of 10 bit's gebruikt,
de uitgang kan altijd tussen twee waardes klapperen.
Het motortje blijft heen en weer gaan.
Het zou ook de resolutie verminderen en dat willen we niet.

Als ultra cap zou ik deze kunnen gebruiken:
http://nl.farnell.com/panasonic/eecf5r5u104/capacitor-0-1f-5-5v/dp/969…

Joop....

Op 24 juni 2013 18:16:13 schreef joopoldenzaal:
Of je nu 8, 9 of 10 bit's gebruikt,
de uitgang kan altijd tussen twee waardes klapperen.
Het motortje blijft heen en weer gaan.

Dat probleem ken ik. Een mogelijke oplossing daarvoor is de laatste tien metingen bewaren en het gemiddelde van tien metingen laten zien.

10 bits A/D nemen, en de laagste 2 bits weggooien, je hebt dan 256 stappen over, meer als genoeg voor zo'n klein schaaltje...
En zoals reeds gezegd helpt middelen ook om uitschieters eruit te zeven.
Dat de 10uF ook nodig is was te verwachten. Komt doordat je de stappenmotor uit de PIC voedt, waardoor die grote stroomfluctuaties heeft.

Om het flutteren te voorkomen kan je toch prima een dead zone inbouwen. Alleen als de current value en de gemeten waarde meer dan X verschillen ga je stappen.

de uitgang kan altijd tussen twee waardes klapperen.
Het motortje blijft heen en weer gaan.
Het zou ook de resolutie verminderen en dat willen we niet.

Moving average gebruiken: https://en.wikipedia.org/wiki/Moving_average

je hebt dan 256 stappen over, meer als genoeg voor zo'n klein schaaltje...

Heb ik geprobeert.
Maar 256 stappen zijn te duidelijk zichtbaar.
Die 10 bit's zijn echt nodig.

Komt doordat je de stappenmotor uit de PIC voedt, waardoor die grote stroomfluctuaties heeft.

De spoeltjes hebben een weerstand van 280 ohm.
De stroom erdoor kan dus nooit groter worden dan 18mA.
Ik denk dat de storing eerder komt door de inductie.
De diodes gaan pas geleiden als de inductie spanning ongeveer 200mV boven de voedingsspanning uitkomt.

Om het flutteren te voorkomen kan je toch prima een dead zone inbouwen

Dat gaan we doen,maar dan een slow zone.
Niet stoppen maar langzaam naar de juiste stand.
Als de stand bijna juist is hoeft de wijzer maar heel langzaam te bewegen.

Een gemiddelde berekenen is misschien ook bruikbaar.

Moving average ga ik bekijken.

Groeten Joop....

Dan ga je alsnog als je ADC waarde tussen 100 en 101 staat te jitteren krijgen dat je moving average tussen 100.49 en 100.51 kan staan te jitteren. En dan ga je "langzaam" (whatever that may be) van 100 naar 101 staan te jitteren met je naald.

Gewoon een deadzone! voorbeeld:

current pos = 100
je meetwaarde jittert tussen 100 en 101. Pas bij 102 ga je bewegen naar 101. Pas bij 98 ga je naar 99. Als je "ruis" alleen het laatste bitje is, dan jittert ie niet meer. Heb je meer ruis, moet je de deadzone iets groter maken. Als er echt ruis is, gaat ie toch weer "ongeveer" in het midden van de ruis-zone staan.