[Arduino] Digital Curvetracer

hennep

Golden Member

Even terug naar het topic, de resultaten van gisteravond.

Het is ons gelukt om een nette sinus te maken met wat materiaal van een eerder project. Dit hebben we ooit gebouwd om een inverter te bouwen voor 48V DC.

Het lukte bij dat vorige project om een 60W gloeilamp te laten branden door een sinus op een 24/230 trafo te zetten. Toen de uitdaging om het te kunnen bouwen voorbij was, is alles in de rommelbak terecht gekomen. Je kon goedkoper een 600W inverter in China kopen dan dit project afbouwen. Nu kwamen de printen weer van pas om even te testen.

Deze foto laat de sinus secundair zien met een C van 470n als belasting. Zonder C licht het hele scherm op door de 10kHz pwm signaal dat nog vlot door de trafo heen komt.

Het plan is om uiteindelijk een L6203 op 100kHz te gaan gebruiken zodat ook met een hogere frequentie gemeten kan worden. Voorlopig moeten we eerst proberen te voorkomen dat die sinus zover inkakt.

In eerste instantie gebruikten we de 1.8VA trafo maar de sinus secundair stortte in bij belasten met een 4k7 weerstand. De spanning zakte van 26.3V naar 13.3V. Daarmee kun je geen metingen doen. Met een 24VA trafo en een belasting met 1k5 (de octo weerstanden) gebeurt dat nog steeds teveel, maar toch aanzienlijk minder, 19.3 naar 14.6V.

We kunnen met een 24VA trafo al een redelijke curcetracer meting doen.
De ovaal is nog niet helemaal vloeiend maar als je bedenkt dat het signaal dat op de weerstandsdeler staat ongeveer 500mV is, en dat wordt gemeten met een Arduino 10bits ADC op 3.3V, dan kan daar nog heel wat verbeterd worden. Met die 12bits STM32 alleen, zal dat al een stuk beter gaan.

EDIT: Inderdaad, de schaal klopt niet. :-)

reading can seriously damage your ignorance
blackdog

Honourable Member

Hi Hennep, :-)

Die kleine trafo's hebben zeer hoge koperverliezen!
Daarom werkt die condensator over de uitgang van je trafo ook zo goed om je PWM frequentie te filteren.

Ik heb hier twee kleine rinkern trafo's de DC verliezen zijn daarbij 3 a 4x lager dan een EI kern trafo van het zelfde vermogen.
Nadeel is de prijs, denk aan die kleine rinkern trafos aan minimaal 20€ ex BTW.

Ik denk nog steeds dat twee kleine eindversterkers uit fase je 30V top top kunnen leveren, geen trafo en een groot frequentie bereik.

Groet,
Bram

Existence, well, what does it matter? I exist on the best terms I can... Heart and soul, one will burn
hennep

Golden Member

Op 26 januari 2022 12:08:44 schreef blackdog:
Ik denk nog steeds dat twee kleine eindversterkers uit fase je 30V top top kunnen leveren, geen trafo en een groot frequentie bereik.

Soms word je door iets wat in een ander schema is gebruikt volledig op het verkeerde been gezet. Die trafo in het schema van Chris's Workbench is zoiets.
Ik begrijp dat ik een galvanisch gescheiden voeding nodig heb voor die sinus. Maar wat ik niet snap is waarom dat 2 versterkers uit fase moeten zijn. Waarom kan het niet met een symmetrisch gevoede enkele opamp?

reading can seriously damage your ignorance

Op 24 januari 2022 10:19:38 schreef hennep:
Ik zie dat er een paar zijn weggelaten.
C5, C6, C14?

C5, C6 zijn verbonden met pins die op deze CPU GND heten en op de STM32F405Rxx ontkoppeling van de core voltage moeten verzorgen. (de CPU draait op iets van 1.2V, er zit een 3.3V->1.2V LDO ingebouwd daarvoor).

C14 moet als je er een STM32F401R op hebt zitten een condensator op. Op deze CPU is het PB11/I2C2-SDA. (pin 2 van de I2C2 connector).

Ik heb echt nog nooit ontkoppelingsproblemen gehad met dit printje.

De MCP1703 3.3V spanningsregelaar, Daar ben ik een beetje "stout" geweest in dat ik ooit 100nF gemonteerd heb gehad als input- en outputcondensator, maar in het datasheet wordt 1uF aangeraden. Maar hier ben ik dus achter gekomen doordat ik het datasheet nog eens bekeek, niet omdat er problemen waren. Of deze bordjes het advies volgen of nog 100nF hebben weet ik niet.

Edit: Dit is waar ik nu mee bezig ben:

Je ziet de 4 aderige kabel onderin. Bovenin zie je de 4 aderige kabel bij de STLINK (paars) weer. Ik gebruik 4 F-F dupont draadjes als "gender changer" vandaar dat de kleuren niet gelijk zijn. (voor een ander project moet de kabel aan de STLINK "male" eindigen.)

Ik heb tegenwoordig dit kleine printje zodat de "reset" en "boot" knop geen plek (en kosten) op de print innemen. En ik heb dan ook maar iets luxere schakelaars gekozen.

Links als opsteekprint op het "device under test" zie je mijn "debug leds". Ik heb 16 ongebruikte IOs van de CPU naar die connector geroute, en dat blijkt handig met dit 16-ledjes-bordje bij het debuggen.

Maar goed. Debuggen over de 4-pins STLINK kabel gaat prima.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
hennep

Golden Member

@rew, Welk programma gebruik jij om te debuggen?

Ik heb zojuist een poging gedaan met STM32CubeIDE maar die herkent de chinese clone niet eens.
Ik meen in die paarse programmer op jouw foto ook een clone te herkennen.

Programmeren met de STM32CubeProgrammer gaat wel, ik zoek dan het .elf bestand dat is gemaakt door de IDE, en ook vanuit de Arduino IDE kan ik de ST-link gebruiken om te programmeren.

code:

STMicroelectronics ST-LINK GDB server. Version 6.0.0
Copyright (c) 2021, STMicroelectronics. All rights reserved.

Starting server with the following options:
        Persistent Mode            : Disabled
        Logging Level              : 1
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Disabled
        SWD Debug                  : Enabled
        InitWhile                  : Enabled

Target no device found

Error in initializing ST-LINK device.
Reason: No device found on target.
reading can seriously damage your ignorance

Ik debug normaliter met "print statements". Zelden dat ik de debugger aanslinger.

Als ik dat doe, dan doe ik "stlink -m" in 1 window, en dan arm-none-eabi-gdb build/ch.elf in een ander window. Daar heb ik dan dus gdb....

Ik ben linux gebruiker en heb jaren geleden besloten dat ik liever geen IDE gebruik. De reden is dat zo'n IDE dan ook een editor ingebouwd heeft hetgeen betekent dat ik voor iedere verschillende processor/programmeeromgeving ik steeds weer een andere editor zou moeten leren. Laat mij maar klooien met mijn vertrouwde editor.

Ik heb tegenwoordig scriptjes die "indien source gewijzigd -> make" doen. En ook: "indien DFU device opduikt, programmeer hem dan maar". Ik save dan m'n source, hij wordt vanzelf gecompileerd, en als ik tevreden ben tik ik "reboot bootloader" in tegen m'n (kennelijk al half werkende) device, of ik druk op de knopjes. En dan zit ie dus een paar seconde later in de laatste versie van m'n programma.

[Bericht gewijzigd door rew op 1 februari 2022 19:50:15 (62%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
hennep

Golden Member

Op 1 februari 2022 19:46:49 schreef rew:
Ik ben linux gebruiker en heb jaren geleden besloten dat ik liever geen IDE gebruik.

Tot 27 jaar geleden deed ik het 't liefst net zo met de Semware editor in MS-Dos. Voor alles wat ik nodig had, had ik macro's met een sneltoets. Totdat ik voor mijn werk MS-Office moest gaan gebruiken. Toen ben ik heel snel een klikspaan geworden.

Ik heb ook Linux op m'n laptop, maar wel met de Cube IDE van ST, met de originele ST-Link programmer. Die programmer heb ik donderdag binnengekregen en werkt uitstekend in Cube. Om een of andere reden werkt de kloon niet in Cube. Ik vermoed dat ST een mogelijkheid heeft om vanuit de software te detecteren dat het niet de originele is.
Ik had vanmorgen binnen 5 minuten (vanuit "create new project") een blink programma voor jouw F072 bordje gemaakt. De meeste tijd ging daarbij verloren in het zoeken op internet naar een delay functie (HAL_Delay) voor de Cube omgeving. Ik vind dat het redelijk intuitief werkt en ga zeker verder met Cube.

Als ik jou een tip mag geven voor eventuele volgende controllerbordjes, zet dan alle connectoren op een 0.1" raster. We kunnen nu geen shield maken met een stuk protoboard. De enige connectoren die wel gezamenlijk op zo'n raster zitten zijn UART en de 2 I2C connectoren, en uitgerekend die hebben we net niet nodig.

----

Dinsdag hebben we een poging gedaan om met een enkele LM324 opamp gevoed vanuit een gescheiden symmetrische DC voeding de curvetracer aan te sturen. Dat werkt uitstekend met een toongenerator, zie plaatje hieronder. Bedankt voor die tip blackdog. Ik snap alleen nog niet waarom je 2 exemplaren in tegenfase wilde gebruiken.
We moeten nog even uitzoeken hoe we de sinus van de microcontroller (DAC) gescheiden naar de opamp kunnen overbrengen. Met een condensator er tussen lijkt er toch nog een klein wisselstroompje naar de curvetracer te lopen die de meting iets beinvloedt. Misschien met een optocoupler maar ik heb nog geen idee hoe ik dat moet doen, tot nog toe heb ik daarmee alleen maar digitale signalen verwerkt.
Het plaatje hieronder is nog vrij grof, de weerstandsdelers moeten herberekend worden omdat we daar een veel te grote veiligheid hebben ingebouwd.

reading can seriously damage your ignorance

Op 12 februari 2022 12:55:36 schreef hennep:
Als ik jou een tip mag geven voor eventuele volgende controllerbordjes, zet dan alle connectoren op een 0.1" raster. We kunnen nu geen shield maken met een stuk protoboard. De enige connectoren die wel gezamenlijk op zo'n raster zitten zijn UART en de 2 I2C connectoren, en uitgerekend die hebben we net niet nodig.

Accoord! Dat is in de "locale design rules" opgenomen sinds dat dit printje gemaakt is. 't vervelende is dat ik diverse opsteekprintjes voor speciale toepassingen heb gemaakt die de connectors op deze posities verwachten. Dus zomaar dit ene printje "verbeteren" is moeilijker dan het lijkt.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/