Als het de bedoeling is, dat Q9 (lineair) meer stroom doorlaat naarmate de spanning op Jumper P2 stijgt, moet je idd. de ingangen van U1 en U2 omwisselen.

De idioot die op het rare idee kwam om pin2 van een standaard-opamp als inverterende ingang te bestempelen, moesten ze kielhalen. Op een mammoettanker. :-)

Wat Nico. C's reactie betreft: ik veronderstel dat hij er van uitgaat dat het een stroombegrenzing betreft, die moet ingrijpen als de stroom de perken te buiten gaat.

[Bericht gewijzigd door pros op ]

Ja idd, zopas even mijn test schakeling nagezien en die liggen juist omgekeerd. Ik ga direct het schema omwisselen! Bedankt Pros! Ik had het juist gemaakt maar verkeerd getekend en gezien mijn geringe analoge ervaring merkt ik deze fouten niet eens op.

edit:

Schema is aangepast.

De lol van de het 1-bits-dac gedoe blijft: Je schakelt je H-brug digitaal, en bouwt daar je golfvorm mee op. Ik snap dat je je DA convertor al hebt, maar dat maakt het niet makkelijker om daarna de H-brug aan te sturen.


    curval = curval + input - 0x80;
    if (curval > 0x180) {
        curval -= 0x80;
        DRIVEPLUS;
    }
    if (curval  < 0x80) {
        curval += 0x80;
        DRIVEMINUS;
     }

Rogier.

Op 25 april 2007 20:50:59 schreef rew:
De lol van de het 1-bits-dac gedoe blijft: Je schakelt je H-brug digitaal, en bouwt daar je golfvorm mee op. Ik snap dat je je DA convertor al hebt, maar dat maakt het niet makkelijker om daarna de H-brug aan te sturen.
Rogier.

Dat kan maar ik ben bijna zeker dat de invloed op de vloeistoffen zo verschillend zijn dat dit behoorlijk in de war gestuurd wordt. Vergeet niet het gaat over heel specifieke trillingen die figuren vormen. Er mogen geen neven effecten ontstaan omdat er dan ongewenste kleurmixing ontstaat bij de figuren. Maar dit wil niet zeggen dat daar geen mogelijkheden inzitten. Als alles werkt kan ik heel gemakkelijk naar je methode overstappen en zien wat het praktisch effect is. Trouwens ik denk dat via mijn lookup tabel veel meer mogelijkheden zijn qua signaal vorming. Daar kan alles gewoon door enkele getallen in te geven.

Hij hoeft toch weinig meer te doen dan op te geven welke richting de konus v/d luidspreker uit moet (door de H-brug te sturen) en vervolgens de "snelheid" te bepalen door Q9 min-of-meer open te sturen?

Het lijkt me verstandig om beschermingsdiodes over de luidspreker te zetten, zodat de spanning over de luisprekerspoel niet enorm hoog word vanwege het plots uitschakelen van de stroom. (dat kan maar zo een puls van enkele honderden volts worden, die als een stoomtrein je hele print kapot walst)

Daarnaast is de sturing van de FETs verre van ideaal. Ik weet niet hoe snel je wil schakelen, maar als je snelheid wilt, dan moet je shottkey's over de collector-emitter van iedere transistor zetten om saturatie te voorkomen, en een soort klasse-B trapje voor iedere FET.
Met deze sturing ben je in staat de FET's vrij snel open te trekken, maar dicht gaat tergend traag. Let overigens op de bouw. Al die hoge stromen die kunnen heel makkelijk voor beinvloeding van de analoge delen van de schakeling zorgen, zodat de boel gaat oscilleren enzo.

Ik begrijp dat je de stroom wil regelen die door de luidspreker loopt. Kan je niet simpelweg een analoog 'audio' trapje maken met liefst een symetrische voeding (kan je ook 2 extra torren voor gebruiken). 2 Ohm weerstandje in serie met de luidspreker, en je kan de stroom perfect regelen. Kost minder, en is waarschijnlijk stukken betrouwbaarder en nauwkeuriger. Het is zulk ontzettend standaardwerk. Het enige verschil is dat je DC moet gaan koppelen, maar dat maakt volgens mij niet zoveel verschil. In een geval als dit WIL je juist niet in saturatie werken, je wil in het lineaire gebied werken. Dat is veel nauwkeuriger. Zo'n tegenkoppellus geeft al snel een versterking voor harmonischen in een bepaald frequentiegebied. (tenzij je zin hebt om het hele ding door te gaan rekenen, en het ook nog eens zonder slordigheidsfoutjes doet)

Voor die diodes was ik nog aan het twijfelen. Er zitten in een IRF520 al ferme diodes in, maar niets belet mij om er nogeens bovenop te plaatsen.

Anderzijds mag het ook weer niet zo heel steil gaan. De meest gebruikte basis frequentie is tussen 50 en 100Hz, dus helemaal niet zo hoog en steil zoals van max negatief tot max positief mag ook niet want dan is het een explosie van de vloeistof en bekom je nooit figuren. er is dus altijd een kurve nodig, juist die helling moet ik precies kunnen vastleggen.

Vergeet niet het gaat doorgaans slechts over enkele wavegolfjes, mogelijks zelfs 1 of 2 op 100Hz basis. Daarna is het gedaan. Dus zo steil mag het zeker niet gaan.

Op 25 april 2007 21:03:46 schreef (Z)weetvoetje:
Daarnaast is de sturing van de FETs verre van ideaal. Ik weet niet hoe snel je wil schakelen, maar als je snelheid wilt, dan moet je shottkey's over de collector-emitter van iedere transistor zetten om saturatie te voorkomen, en een soort klasse-B trapje voor iedere FET.

Of telkens een BS170 ipv. de BC327 en een BS250 ipv. de BC337. Maar dan nog: de luidspreker reageert veel trager dan de gebruikte transistors, en de stroom is begrensd. Ik verwacht weinig problemen.

Als de eisen zo laag zijn, dan snap ik niet dat je zo moeilijk doet. Maar goed, met een beetje extra moeite krijg je het ook wel aan de gang.

Mocht ik je toch kunnen overtuigen, dit is het principeschema van een klassa AB-versterker: http://upload.wikimedia.org/wikipedia/commons/4/4c/Amplifier_Circuit_S…

Ja pros, de luidspreker zal idd veel trager zijn. Juist die vertraging wil ik dan fotograferen om de ideale kurves aan te maken. Ik ben gewoon benieuwd hoeveel vertraging er zal zijn tussen beweging sturen naar volledig beneden en de verlopen tijd. Ook kan het zijn dat ik gedurende een bepaalde tijd het signaal op een bijna konstant level moet aanhouden alvorens te veranderen van richting. Het vermogen zit eigenlijk vooral in de bekomen oppervlakte van de beweging. Hetzelfde zal zijn als ik volledig positief stuur om de beweging naar boven te bekomen, ook boven zal ik een tijdje moeten aanhouden juist omdat de luidspreker de tijd nodig heeft om te volgen. Dit maakt juist deel van mijn experiment, je mag het niet als audio beschouwen. Vandaar ook dat een lookup tabel met die waarden zo praktisch is. Ik heb om te starten de lengte op 4096 samples vastgelegd maar niets belet mij dit te wijzigen. Ik heb 4Mbyte te beschikking! Ook dit is de reden waarom alles in de FPGA gaat. wijzigingen zijn zo snel gemaakt en timings problemen heb je nooit omdat alles toch parallel verloopt.

Da's een wisselstroomding. Het is net de bedoeling de conus-beweging zo goed mogelijk met gelijkspanning in de hand te houden, bv. 2mm achteruit aan 20km/h en vervolgens 3.5mm vooruit aan 30km/h. Of zoiets... :-)

Dit was een reactie op (Z)weetvoetje, voor alle duidelijkheid.

[Bericht gewijzigd door pros op ]

Op 25 april 2007 21:35:57 schreef (Z)weetvoetje:
Als de eisen zo laag zijn, dan snap ik niet dat je zo moeilijk doet. Maar goed, met een beetje extra moeite krijg je het ook wel aan de gang.

Mocht ik je toch kunnen overtuigen, dit is het principeschema van een klassa AB-versterker: http://upload.wikimedia.org/wikipedia/commons/4/4c/Amplifier_Circuit_S…

Ik wil 100% kontrole hebben over de bewegingen. Ook het aanmaken van het stuursignaal is heel belangrijk alsook het nulpunt en de DC koppeling. Maar mijn eerste versie was nog veel eenvoudiger, nl gewoon 1 transistor met een blokgolf als sturing, de luidspreker in de emitor uitgang. Maar juist dit wil ik onder perfecte kontrole brengen met deze nieuwe uitgave.

@pros,
Je hebt het perfect omschreven wat ik wil!

Tja, dit kan allemaal echt helemaal analoog. Als je graag wil kan je eventueel ook een lapje alu-folie op de conus plakken, een stalen gaasje eronder hangen, en en dan op zo'n manier capacitatieve plaats-terugkoppeling doen. Capaciteit meten gaat aan een frequentie van >100kHz. Dus dat kan makkelijk. Je moet wel de data die je in de FPGA stopt ietsje aanpassen, omdat de capaciteit niet lineair verloopt met de verplaatsing, maar dat maakt verder eigenlijk niets uit.
Beetje ruis krijg je dan overigens wel. En echt simpel is dit ook niet meer te noemen. Duur hoeft het echter niet te zijn.

edit:
Pfft...

je haalt 2 condensators weg, plaatst een opampje of 2 erbij en je hebt een DC ding. Stroomsturing is PERFEKT mogelijk door een weerstand in serie met de luidspreker te zetten, aan de massa-kant. Je meet de spanning over de weerstand, en niet over de luidspreker. De tegenkoppeling zorgt dan voor een zeer goede stroomregeling.

Echte snelheidssturing gaat met die H-brug van jouw ook niet lukken.

Je kunt zo'n analoge versterker natuurlijk ook gewoon aan de FPGA hangen, da's geen enkel probleem lijkt me zo. DA-converter had je geloof ik al...

[Bericht gewijzigd door (Z)weetvoetje op ]

Ik geloof best wel dat je eenvoudige schakeling evengoed werkt maar voor mij is ze moeilijker en duurder. FETs heb ik hier voldoende liggen, de stroom meet ik toch ook in een weerstand naar de grond. Maar mijn figuren worden bepaald door de vorm van het stuursignaal. Al die vormen komen in een flash-eeprom gestuurd door de FGPA en dit maakt het zo handig en reproduceerbaar. Het reproduceren ligt aan de basis van dit ontwerp. Het gaat voor mij over een verbetering van iets dat al 3 jaar in gebruik is en waarvan ik de tekortkommingen juist wil aanpakken. Of dit nu meer of minder eenvoudig is speelt helemaal geen rol, maar ik moet kunnen experimenteren door gewoon waarden,
figuren dus, in een lookup tabel te schrijven.

Mijn stuursignaal gaat enkel positief. negatief is een digitaal I/O pin, 0 is positief, 1 is negatief. Is de tabel waarde 0 dan moet alles gedisabeld worden en digitaal is dit gewoon afleggen. digitaal is nu immers eenvoudiger dan analoog.

Geloof me echt, rekening houdend met de rest van de stuurlogika kun je dit heel moeilijk analoog oplossen. het gaat niet enkel over dit klein gedeeltje maar over een volledig systeem.

ps: de freq ligt rond de 50 tot 100 Hz, ik heb in het verleden heel veel problemen dat het te steil(snel) gaat, snel = explosie, kapoet zouden ze zeggen!

Nouja, ik wil je hard waarschuwen voor bijvoorbeeld de gate-source capaciteit, van 1 a 2 nF. Dat geeft bijvoorbeeld al een flinke reden tot instabiliteit bij de stroomregeling. Nouja, misschien gaat het allemaal goed, en ben ik veel te negatief aan het doen...

Een analoge versterker sluit het gebruik van het digitaal signaal opwekken totaal niet uit. Je hoeft de FPGA slechts een analoge spanning op te laten wekken, en dat was je toch al van plan. Simpelweg PWMen en filteren gaat perfekt. Dus ik snap niet waar de kous wringt. Maar goed, ik weet niet wat je verder nog allemaal systemen aan de luidspreker wil hangen.
Feit is dat het regelen van een (vrij kleine) stroom door een luidspreker nog altijd analoog veel simpeler en nauwkeuriger is dan digitaal.

Maar goed, als je het per se digitaal wil doen, dan ga ik wat anders doen.

De tijdconstante van die 1-2 nF gate-source capaciteit samen met de drive weerstand is toch vele malen kleiner dan mijn sample frequentie. De sample frequentie ligt max op 15 usec bij 250 Hz wavevorm ( 1 wave vorm bestaat uit 512 8 bit samples) maar doorgaans zit ik meer rond de 50 Hz, dus 5 maal lager. Een PWM signaal maken of gewoon samples nemen uit een tabel is toch weinig verschillend, en omdat mijn samples direct 8 bit hebben is dit eigenlijk veel eenvoudiger en duidelijker om een vloeiende kurve te maken.

De stroom door de luidspreker zal ergens rond de 1A max zijn volgens mijn eerste testen maar kan ook een stuk lager zijn.

Vandaag gebruik ik al een analoge versterker. Maar ik ben er niet tevreden over, voldoet niet. En ja mijn voorkeur gaat zeker naar digitaal. Dat mijn schakeling niet optimaal is kan ik best begrijpen en waar nodig wil ik zeker bijsturen. Het enige analoge zijn nu die 2 kleine opamps die erin zitten.

Je kunt mijn toepassing vergelijken met een anker die ik wil op een willekeurige plaats brengen en naar mijn pijpen dansen. Die dans vertaalt zich in wonderlijke figuren.

Ik wens je dan verder veel succes...

Ik ga hier verder geen tijd meer aan vuil maken.

Ik heb alles nog eens doorgenomen en uiteindelijk ben ik tot een definitief schema gekomen. In deze versie heb ik de mogelijkheid om zowel een analoog signaal aan te bieden als een PWM signaal. Het analoog signaal wordt in de FPGA gemaakt omdat de vormen heel specifiek opgebouwd worden. Tevens worden tientallen vormen bijgehouden omdat iedere vorm een bepaalde type figuur moet opwekken. De samenstelling van deze vorm kan zowel door de FPGA DA convertor gebruikt worden maar is ook dezelfde inhoud als deze bij gebruik van een PWM signaal.

Gebruik ik een PWM signaal dan komen de hoge frequentie's van de PWM naar de luidspreker. Om dit te vermijden zijn 2 extra lowpass filters tussen het luidspreker signaal geplaatst. Deze filters bestaan uit hoogkwaliteits spoelen. Gebruik ik enkel het analoog signaal om te sturen dan kunnen deze filters uitgeschakeld worden alhoewel dit waarschijndelijk niet eens nodig is.

Voor het PWM signaal schakel ik niet tussen positief en negatief omdat ik 2 zones heb waardoor ik ofwel in het positief gedeelte ofwel in het negatief gedeelte zit. Het PWM signaal moet bijgevolg enkel schakelen tussen max aan en gewoon af. Hierdoor moeten de fets niet kontinu omgeschakeld worden van polariteit, enkel als ik door de nul doorgang ga, maar dat weet de FPGA en zal 1 PWM clok (ongeveer 0.5 usec) beide takken kortstondig uitschakelen. Ik ga dus geen last hebben met de ladingen van de fets.

Ook bij het analoog regelen verloopt het ongeveer volgens hetzelfde senario. Ofwel werk ik in de negatieve zone ofwel in de positieve maar er wordt nauwelijks heen en weer geschakeld.

Het bestukkingsplan is klaar, de print is op maat gesneden en de montage gaten zijn geboord:

http://users.skynet.be/fotoopa/fpga/IMG_0169.jpg

Hier staat het volledig schema

en hier het volledig bestukkings plan

Morgenvroeg begin ik de bestukking zoals gewoonte op gaatjes print. Begin volgende week moet ik dan alles kunnen uittesten met de FPGA eraan. De meeste delen in de FPGA zijn al klaar en ze zijn al getest via scoop beelden.

Zodra het geheel af is plaats ik dan de resultaten.

edit: commentaar weggehaald, ik had me verkeken :(

[Bericht gewijzigd door driessens_nl op ]

Om toch maar iets zinnigs te kunnen zeggen [ :-) ]: als je die draaischakelaar nog niet ik huis hebt, koop dan een 4x3 exemplaar, dan kan je telkens 4 contacten parallel zetten. De kwaliteit van die dingen laat vaak te wensen over.

Bedankt pros!, nee ik heb hem nog niet. Vandaag 35 Km met de fiets gereden om hem te halen maar toen ik daar kwam was de zaak voor 2 dagen gesloten.

Met die draaischakelaar zou ik een aantal weerstanden in serie plaatsen om zo het vermogen ook naar beneden te halen. Het moeten zeker vaste standen zijn zodat het perfect reproduceerbaar is. Bij nog meer regeling kan ik ook de wave tabel bijsturen, ze is toch 7 bits + teken, dus marge genoeg. 11 standen heb ik niet nodig, dus ja ik kan ze dan parallel leggen.

Gezien mijn controller nu volledig af is ben ik jullie nog een update verschuldigd over de oplossing van de H-brug.

Na verschillende metingen als gevolg van de tips hier verkregen heb ik een aangepast schema gemaakt. Al het analoge werd vervangen door puur digitale aansturing met als basis een pwm sturing. Na het maken van een testopstelling bleek mijn vrees voor de invloed van de vrij hoge frequentie's van de pwm was ongegrond. Wel heb ik de gates van de fetsturing aangepast om de invloed van de capaciteit van de gates op de schakelfrequentie te minimaliseren. De pwm werkt ook niet zoals een standaard pwm maar is eerder een sturen tussen actief en vrijloop. Voor de verplaatsing van het membraan van de luidspreker is dit in mijn geval even goed en de fets hebben op deze manier geen schakelverliezen. De omschakeling tussen de positieve en de negatieve zone gebeurt altijd via een neutrale nul doorgang waardoor de fets een zee van tijd hebben tijdens de omschakeling om uit geleiding te gaan. Kortstondige stromen in de H-brug tussen de takken is hierdoor volledig uitgesloten. Er is ook een extra powerfet bijgevoegd die enkel de brug voorziet van de 12V spanning wanneer een waveblok aankomt. Dit allemaal om veiligheids redenen zodat er nooit kontinue DC stroom kan vloeien door de spreaker want dit zou ongekontroleerd fataal zijn. Ik denk hierbij vooral aan de momenten dat je de FPGA gaat gaan herprogrammeren waardoor tijdens die faze de FPGA in tristate staat.

De pwm is via een A/B encoder voorzien van een prescaler. Hierdoor kan ik on the fly de frequentie instellen op de frontplaat waarbij mede door de digitale aflezing de waarden prefect opnieuw kunnen ingesteld worden voor een bepaalde figuur ontwikkeling. Testen wijzen uit dat zelfs een verhoging van 11 naar 12 van de prescaler al een belangrijke invloed kan hebben. Dit komt omdat je op de resonatie werkt van het ganse systeem, resonantie die mede beinvloed wordt door de belasting van de vloeistof of voorwerpen op het membraan.

De eindresultaten zijn buitengewoon goed, alle regelingen verlopen heel soepel en confortabel.

Ik heb hierbij een update van de H-brug die ik gebruik

En hier staat een voorbeeld hoe een waveblok eruitziet

Hier een foto van een complexe opname.

http://www.pbase.com/fotoopa/image/81267194/medium.jpg

Een grotere versie kun je hier zien

Deze opname, gestuurd door de FPGA controller bevat heel wat extra timingen. Op de foto merk je een bal (knikker) die valt terwijl de vloeistof onder invloed van de wave trillingen gestuurd door de H-brug opslingeren. De vallende knikker wordt door de laser zender/ontvanger gedetecteerd en de controller voerdt de nodige timingen uit om op het juist moment de waveblok naar de H-brug te sturen, de externe shutter aan te sturen, te wachten tot die shutter openstaat om dan de 4 flitsen aan te sturen die het beeld vormen. Door al die timungen juist in te stellen tov het vallende object bekom je bovenstaande foto. Zelfs een verschil van 1 msec bij de instelling van de vallende knikker maakt een beeld onbruikbaar. Merkop dit zijn geen geluks opnames want eens je de juiste instellingen bekomen heb maak je de ene na de andere perfecte opname. Daarvoor moet ook de afstand die de vallende knikker moet afleggen konstant zijn. Voorlopig heb ik 3 opnames bijgeplaatst op mijn pbase gallerie maar ik heb er zo tientallen op mijn backup.

Blijft nu nog een praktische realisatie, nl ik moet nieuwe golgvormen ingeven in het flashgeheugen. Immers iedere golf heeft zijn eigen characteristieken. Ik zoek nu een meer praktische tool om deze 1024 getallen te bepalen aan de hand van een vorm die ik teken. Je kun gemakkelijk vormen uittekenen maar het vergt vrij veel werk om op een schaal tussen 0 en 127 plus nog een het teken ( eigenlijk is het een schaal van 0 tot 255) al deze waarden te bepalen.

Het flash geheugen is voldoende groot om heel veel wavevormen op te slaan. Ik zoek eigenlijk iets dat het omgekeerde is van een excel voorstelling. Daar maak je een grafiek uit een reeks getallen terwijl ik graag getallen zou hebben uit een grafiek.

Bedankt voor de links. Dit ziet er idd iets uit wat ik zoek! Zelfs een voorlopige evaluatie versie zou ruim voldoende zijn.

update:
"The unregistered version is time limited (21 days) and does not allow any export of digitized data out of the application."

Dus toch best registreren, maar het ziet er echt goed uit! En 39 euro is het mij wel waard als het behoorlijk werkt.

[Bericht gewijzigd door fotoopa op ]

Mooi ge-PhotoShop-ed :+

Nee, knap werk.