Yo, geen probleem..

Als je het chipje wil hebben stuur ik m wel geprogrammeerd en wel naar je op, heb er toch een paar liggen hier..

Op 2 februari 2007 16:25:29 schreef evarist:
Maar ik wacht nog even af voor misschien een hardwareoplossing.Iemand?

Heeft dat nog steeds je voorkeur? Nou, goed dan. Om te beginnen kampen de meeste VCO's in IC-verpakking met het probleem dat het werkgebied beperkt is. Als je de datasheet van de 74LS624 bekijkt, dan merk je dat de lineariteit ook niet schitterend is. Maar misschien is dit bruikbaar:
http://www.uploadarchief.net/files/download/VCO.png
P1, T1 en T2 vormen een stroombron. De stroom, die je met P1 instelt, stroomt door T1, en wordt gespiegeld door T2. Hiermee wordt C1 lineair ontladen, tot het punt waar de spanning over C1 kleiner is dan "U in". Op dat ogenblik wordt de uitgang v/d opamp laag, en triggert daarbij 2 monoflops. MF1 voorziet T3 kortstondig van basisstroom, zodat C1 terug opgeladen wordt. MF2 geeft een puls van 1mS. Hierna herhaalt alles zich opnieuw...
Hoe lager de spanning op "U in", hoe langer C1 moet ontladen worden. T2 zal er echter nooit in slagen, C1 tot 0V te ontladen. Is "U in" 0V, dan zal de oscillator bijgevolg stoppen.
Ik moet er wel bij vermelden, dat dit alles theorie is; de praktijk kan anders uitvallen.

Op 2 februari 2007 14:48:14 schreef smsmonster:
Past net zo :P 89.3% van 1KB geheugen in gebruik, komt door die float..

Kan het niet zonder float? De maximum waarde is --nadat je er 512 afgetrokken hebt-- 511, hetgeen overeen moet komen met 120mS. Vermenigvuldig die twee, en je krijgt 61320. Dat past nog net in een unsigned int. Vervolgens doe je:


while (1) {
    waarde = read_adc(2) - 512;
    if (waarde > 0) {
        sbi(PORTB, PB5);
        delay_ms(1);	           //puls van 1ms
        cbi(PORTB, PB5);
        delay_ms(61320 / waarde);  //gedurende een variabele tijd laag houden
    }
}

Als het echt nauwkeuriger moet, zou ik voor unsigned long int bewerkingen kiezen, in combinatie met een delay_us().

Op 2 februari 2007 20:50:19 schreef pros:
[...]
Kan het niet zonder float? De maximum waarde is --nadat je er 512 afgetrokken hebt-- 511, hetgeen overeen moet komen met 120mS. Vermenigvuldig die twee, en je krijgt 61320. Dat past nog net in een unsigned int. Vervolgens doe je:


while (1) {
    waarde = read_adc(2) - 512;
    if (waarde > 0) {
        sbi(PORTB, PB5);
        delay_ms(1);	           //puls van 1ms
        cbi(PORTB, PB5);
        delay_ms(61320 / waarde);  //gedurende een variabele tijd laag houden
    }
}

Als het echt nauwkeuriger moet, zou ik voor unsigned long int bewerkingen kiezen, in combinatie met een delay_us().

Zou kunnen, het past nu dus waarom ingewikkeld doen :) Overigens is er niet zeker wat er gebeurt als de spanning nu kleiner is dan 2.5V (bijv waarde=300), je doet dan:
waarde = 300-512 in een unsigned int..

Met delay_us kun je het inderdaad ontzettend nauwkeurig maken, ook de tijd voor de berekening en de A/D conversie telt nu mee immers. We moeten even van evarist horen hoe nauwkeurig het precies moet denk ik.. Volledig analoge oplossing is wel sjiek, maar omslachtig mijns inziens.. Nu heb je maar 1 DIL8 ictje zonder externe componenten nodig (mits het apparaat dat die pulsjes inleest TTL-compatible is) en geen symmetrische voeding!

Voor "waarde" dan toch maar een int gebruiken, of eerst testen of die groter is dan 512?
Verder heb ik wel begrip voor de voorkeur die evarist geeft aan een schakeling met discrete componenten. Daar kan hij zelf aan sleutelen zoveel hij wil, en is hij niet afhankelijk van een bereidwillige avr-fanaat om even dit of dat te wijzigen. Zelf zou ik zonder nadenken een tiny13 inzetten voor de job.

En na een maand dubben is dit uit de bus gekomen. Graag jullie mening en de mogelijkheid het simpeler te maken.

http://www.uploadarchief.net/files/download/AmpereUurMeter2.doc

http://www.uploadarchief.net/files/download/AmpereUurMeter.JPG

Even uitleg.
De hallsensor Part1 geeft een spanning van de helft van de voeding + een spanning afhankelijk van de te meten stroom.
Deze wordt in IC1 versterkt en op nivo 1 tot 4V gebracht.

IC2 is een stroombron. Deze levert een uitgangsstroom afhankelijk van de spanning op de ingang. De spanning op C1 zal aldus langzamer of sneller stijgen. Bereikt de spanning een waarde van ongeveer 4V zal IC3 omklappen. De tor Q1 zal het vergelijkingsnivo van de ingang laten zakken naar 1V. De tor Q2 zal de C ontladen. D1 blokkeert IC2 om de C niet te laden tijdens het ontladen. Alsdus ontstaat achter diode D2 een puls, die naar de fietscomputer gaat.
Deze gaat een snelheid aangeven die dan Ampere worden. De afgelegde weg zal de verbruikte Ah worden.

Goedkoper kan niet (fietscomputer 9€ )

[Bericht gewijzigd door Evarist op ]

Bij de nippels van Freya! Waarom een *.doc bestand?
Heb je het al op een breadbordje uitgetest?

Pros, ik zal de vorige tekst eens mailen aan Freya maar ik weet niet of ze daar mee kan lachen. :) :) :) Is een sjieke madam, die Freya die ik ken.

BTW hoe zou jij dat gedaan hebben?

Edit// Met behulp van een vriend is dat geregeld. Goed zo, Pros?

[Bericht gewijzigd door Evarist op ]

Op 5 maart 2007 21:10:55 schreef evarist:
Edit// Met behulp van een vriend is dat geregeld. Goed zo, Pros?

Ik kan een *.doc bestand wel bekijken, hoor. Maar om een mastodont als OpenOffice (dat ik verder nooit gebruik) te moeten starten om een schema te bewonderen, is gewoon te gek.
Verder is het wel een eigenzinnige aanpak, maar er is geen reden waarom het niet naar behoren zou werken.

Dit bewijst dat ik in computers niet zo sterk ben. Ik heb via paint er een jpg van gemaakt.

Op 5 maart 2007 21:37:51 schreef pros:
Verder is het wel een eigenzinnige aanpak, maar er is geen reden waarom het niet naar behoren zou werken.

Wat bedoel je daarmee? En hoe zou jij dat doen, zonder naar een pic te grijpen?

[Bericht gewijzigd door Evarist op ]