Steward platform telescoop

Een spiegeltelescoop is niets meer dan een spiegel en een oculair in de juiste positionering ten opzichten van elkaar. Om die juiste positionering te bereiken zijn mechanische instellingen noodzakelijk zoals scherpstelling en collimatie, het uitlijnen van de optica.

Gewoonlijk worden deze instellingen verzorgt door een aantal aparte mechanieken. Om deze praktisch goed te laten werken zodat de instellingen voorspelbaar werken, elkaar niet beïnvloeden en na het instellen vast blijven staan, moet de gehele constructie een voldoende stijfheid hebben.

Een andere benadering is alle instellingen door 1 mechaniek te laten verzorgen, in dit geval een zogeheten Steward platform. Dit soort moderne’ oplossingen is mogelijk door het inzetten van motoren bestuurd door een computersysteem, een Arduino microcontroller. Het lijkt aantrekkelijk om alles vlot en gemotoriseerd in te kunnen stellen, zodat het beeld al dan niet automatisch en op afstand voortdurend geoptimaliseerd kan worden en stijfheid minder belangrijk wordt.

Dit is gunstig bij grote telescopen, die relatief minder stijf zijn dan kleine, en specifiek voor Dobson (alt-azimuth) monteringen is het praktisch dat het Steward platform ook direct in een rotatie as voorziet.

Persoonlijk vond ik het echter vooral een interessant en elegant idee om eens mee te experimenteren. Er zijn een aantal professionele telescopen gebouwd met deze constructie, echter met beperkt succes. Ook zijn er projecten met deze constructie enkel voor een handmatige collimatie. Hoewel ik later nog eens een grotere privé telescoop wil bouwen besloot ik dit idee nu uit te proberen in een klein experiment.

Home build Steward platform telescope.

De spiegel is een wat gehavende surplus 205 mm f/2,5. De camera is een oude, maar behoorlijk gevoelige, C-mount kleuren videocamera CV-S3300 zonder lens. De montering is een EQ6. De niet 3D-geprinte onderdelen zijn van multiplex, de stangen eenvoudig 5/8″ elektra buis van de Gamma.

Design on paper.

Het ontwerp is geschetst op papier. Op de schets mat ik ook de onderlinge positie van de kruiskoppelingen op. Deze manier van werken heeft een beperkte nauwkeurigheid, maar de constructie blijkt zo flexibel dat er niets afbreekt als de sturing om enige reden niet helemaal juist is.

Steward platform telescope 3D printed universal joint.

De noodzakelijke kruiskoppelingen zijn uitgevoerd als levende scharnieren, 3D-geprint in PLA. Om deze goed te laten werken is het belangrijk de scharnieren voor het printen goed te plaatsen in de printer. Er is er nog geen een gesneuveld. De scharnierpunten van de stangen liggen niet in 1 vlak en komen van twee stangen ook niet in 1 punt samen. Dit is niet optimaal, maar het lijkt geen probleem te geven. Aan de onderzijde zijn zij hetzelfde, maar groter opdat de motor in het midden past.

Steward platform telescope stepper motors.

Voor de motoren koos ik goedkope stappenmotoren met vertraging type 28-BYJ-48. Deze zijn eigenlijk ongeschikt. Zo is er in alle richtingen een aanzienlijke speling op de as. Ook zijn ze erg traag. Dat is voor het gebruik geen probleem, maar onhandig bij het ontwikkelen. Toch heb ik het project hiermee doorgezet, het ging er immers niet om de beste telescoop ooit te maken maar om te zien of ik het geheel werkend kan krijgen.

Op de as van de motoren is een stuk M5 schroefdraad bevestigd, dat in de PVC buis loopt in twee M5 moeren waar door de 3D geprinte houder de speling uit gedrukt wordt. Dit idee werkt keurig, jammer dat de motor zelf zo veel speling heeft…

De sturing wordt verzorgd door een Arduino Mega met drie ULN2803 darlington array’s. Omdat ik geen Arduino code kon vinden welke geschikt was voor een Steward platform met lineaire actuators heb ik zelf iets geschreven.

Feitelijk hoeft men slechts 1/6 deel van de code te bedenken, de rest is copy-paste met enige verwisselingen. De user interface bestaat uit een kleine joystick en drie leds.

De onderkant van de telescoop met o.a. de Arduino.

De eerste resultaten zijn bemoedigend, het lukt vlot om de kerktoren en later enige sterren in focus te krijgen. De kijker goed collimeren lukte echter nog niet.

Boven de top van de kerktoren in de schemering, onder enige sterren met veel coma op de monitor.

Het blijkt lastig het platform in het donker goed te bedienen omdat dan niet zichtbaar is hoe het beweegt. Ook laat de code nu enkel het maken van stappen toe: groot, medium of klein, wat niet handig werkt. Er is dus nog genoeg te verbeteren 🙂

Voor wie geïnteresseerd is verzamelde ik de gebruikte 3D-ontwerpen en de Arduino code in een ZIP:

IBM Meteobridge display

Van een collega kreeg ik deze week een gloednieuw IBM display cadeau, van een type dat bedoeld is om op een kassa te schroeven. Omdat de ervaring leert dat zo een doosje ongemerkt een tijd in de kast kan blijven liggen, en je er dan weinig lol van hebt, besloot ik er deze regenachtige zaterdag direct iets van te maken.

Het werd een extra display voor mijn weerstation voor op mijn werkkamer.

IBM display as Meteobridge display.

Het display is een HD44780 compatibel met 2×20 karakters in groot formaat, 9 mm karakter hoogte. Het heeft een ietwat onhandige 2 mm pitch header.

De aanwezige IBM elektronica was voor mij niet eenvoudig opnieuw te gebruiken, en had ook geen handige functionaliteit. Deze werd daarom vervangen door een PCF8574 I2C expander printje dat ik jaren geleden maakte voor een Makerspace project, en een Wemos D1, dat is een gebruiksvriendelijke ESP8266 microcontroller module met Wifi.

PCF8574 and ESP8266 in IBM display

Omdat het led backlight een V of 8 nodig had kwamen daar een kleine 5V step down en een 68 Ω / 1W weerstand bij. Dit opdat het geheel op een enkele netadapter van 12V kan werken. Tot slot voegde ik een drukknop toe om de legenda te tonen en het backlight in- en uit te schakelen.

Het energieverbruik uit het stopcontact is 2,7 W met de backlight aan, 2,0 W met de backlight uit.

De actuele metingen van het weerstation worden op het locale netwerk beschikbaar gemaakt door de Meteobridge als een tekstfile. Deze text wordt opgehaald door de ESP. Vervolgens wordt een selectie van acht van de beschikbare meetwaarden op het display getoond.

De Arduino code is zo simpel mogelijk. Een captive portal voor de instellingen zou fraai zijn, maar ik zit daar niet goed in en de toegevoegde waarde is beperkt. De USB aansluiting van de ESP is te bereiken zonder alles te demonteren. Het opzoeken van de te tonen waarde in de tekst gebeurd simpelweg door het aantal spaties te tellen.

Al die getallen lijken misschien wat onoverzichtelijk, maar met enige gewenning is het display in één oogopslag af te lezen. Nu kan ik ook op mijn werkkamer zien wat voor weer het buiten is zònder de gordijnen open te doen 🙂

Onderstaande de Arduino code van dit project.


Update augustus 2024: Omdat de volgorde van de regels in het bericht blijkt te kunnen veranderen na een herstart van de Meteobridge is een nieuwe DisplayMeteo() functie geschreven die hier niet gevoelig voor is.

Temperatuur logger

Om, uit nieuwsgierigheid, te onderzoeken hoe mijn koelkast regelt en reageert op zijn omgevingstemperatuur bouwde ik een simpele temperatuur logger op basis van een Arduino Uno en ingegoten Dallas 1-Wire temperatuursensoren uit China.

De data logger en de omgevingstemperatuur sensor.

Het gebruikte shield is een merkloos “Arduino data logger shield” met daarop een ds1307 I2C real time klok en een SD-kaart slot. Hierop bouwde ik de 1-Wire interface voor ds18b20 sensoren, feitelijk een header en een enkele pull-up weerstand op pin 8. Verder zijn er een kleine groene led om de cpu belasting te tonen en een grotere rode om een waarschuwing te geven dat er geschreven wordt naar de sd kaart, en het te melden als dat onverhoopt mislukt.

Het geheel is op een plaatje aluminium met daar onder een harddisk magneet met plakfluweel geschroeft, zodat het zonder schade als een koelkastmagneet op de deur geplakt kan worden. De verbindingen naar de sensoren in de koelkast en het vriesvak gebruijken flatcables voor een zo goed mogelijke afsluiting van de deuren.

Voordat de datalogger code geladen wordt moet de klok gestart en gelijk gezet worden door middel van bijvoorbeeld het ds1307-voorbeeld dat met de Adafruit RTClib bibliotheek mee komt. Dit programma neemt de tijd van compileren mee als tijd om de klok gelijk te zetten, wat in de Arduino omgeving goed werkt omdat er weinig tijd zit tussen het compileren en de daaropvolgende eerste start van de firmware. De klokt loopt overigens keurig, hij blijft binnen een minuut afwijking per maand.

Ook moeten de unieke 64-bit OneWire adressen van de individuele temperatuursensoren bekend zijn. Deze zijn eenvoudig uit te lezen met het DS18x20_Temperature-voorbeeld van de OneWire bibliotheek. Hierbij worden ze één voor één aan de logger hardware aangesloten en wordt het adres gekopieerd naar de code van de logger.

1-Wire adressen in de code. Deze zijn voor mijn sensoren, en met zekerheid anders dan die van alle andere 1-Wire sensoren.

Als een sensor door de logger vanwegen slecht contact of interferentie een periode niet uitgelezen kan worden is zijn waarde in de log “nan”, van “Not A Number”. Om de sensoren eenvoudig uit elkaar te kunnen houden zijn ze gemerkt met gekleurd PVC tape.

De logging firmware, te vinden op mijn Github, kent systeemtikken van 100 ms. De sensoren worden door een non-blocking routine in twee stappen uitgelezen omdat hier een conversie-wachttijd van 800 ms bij inbegrepen zit. Deze routine heb ik ooit geschreven voor gebruik op de ESP8266. Efficient gebruik van de CPU tijd is hier niet meer dan elegant, het is echter van levensbelang als er nog meer moet gebeuren dan het lezen van de sensoren, zoals het onderhouden van de Wifi verbinding op de ESP.

De gekozen instellingen zijn: 1x per 2s uitlezen, 1x per minuut een gemiddelde temperatuur berekenen en loggen en tot slot deze log 1x per tien minuten naar de kaart schrijven. Er is op de Atmega 328 microcontroller 2 kB RAM, waarvan zo een paar honderd bytes in gebruik zullen zijn voor de verzamelde data voordat deze op de kaart opgeslagen wordt. Dat lijkt nog veilig gezien er bij het compileren 606 bytes voor lokale variabelen over blijven, en werkt in de praktijk goed.

In zowel het vriesvak als de koelkast zijn twee sensoren geplaatst, ´één in een blikje met water en één gewoon los. Dit om tegelijk eens te kijken hoe deze bekende methode voor een betere meting van de temperatuur van een koelkast uitpakt.

Het eerste resultaat is een fraaie grafiek:

Temperatuur in koelkast gemeten met Arduino datalogger.
De temperatuur in de koelkast en het vriesvak over twee dagen.

Hier is te zien dat de duty cycle van het koelen vrij sterk afhankelijk lijkt van de temperatuur. Om een uur of vijf de tweede dag werd de instelling van de mechanische thermostaat omlaag aangepast. Het bevriezen van het water in het vriesvak is in de gele lijn fraai te zien. Later bleek dat hierbij het blik is geknapt door de druk van het ijs! Ook is te zien dat de temperatuur in het blikje met water altijd onder die in de koelkast lijkt te liggen. Komt dit door verdamping? Of wijkt deze sensor af? In het viesvak is de amplitude in het blikje met ijs nog aanzienlijk. Zat de sensor te veel aan de buitenkant in het blik?

Hier is duidelijk ruimte voor nader onderzoek. De logger werkt prima, hij logt weken lang zonder problemen. Ik had nog geen ervaring met loggers. De eenvoud van het gebruik van een SD kaartje in vergelijking met het direct loggen naar de cloud of een eigen server bevalt goed.

Geknapt blikje door het ijs in het vriesvak. Het lijkt er op dat de sensor te zien is, en dus helemaal aan de buitenkant zat.

Field mill

Onlangs maakte ik een field mill, een meetinstrument voor elektrostatische velden. Hiermee kan men potentiaalverschil meten zonder dat er stroom loopt. De elektrische veldsterkte wordt gemeten in volt per meter.

Field mill diy
De field mill.

De molen werkt door twee sets elektroden beurtelings af te dekken met een ronddraaiende, via een sleepcontact geaarde sluiter. Het verschijnen en verdwijnen van het elektrische veld voor de elektroden resulteert een wisselstroom in de ingangen van de voorversterkers. Beide signalen worden omgezet in een spanning, aangeboden aan twee adc kanalen van een Arduino en door synchrone detectie in de firmware omgezet in een meetwaarde.

Het synchroon samplen van twee kanalen in tegenfase zorgt voor een goede onderdrukking van ongewenste common-mode signalen zoals die van het lichtnet.

Oudere ontwerpen gebruiken na de voorversterker gewoonlijk een analoge synchrone detector, opgebouwd rond bijvoorbeeld een CD4066. De hier gekozen ‘moderne’ opzet lijkt goed te werken en kost wat minder hardware. Het geheel wordt gevoed uit de USB. De TL072 opamp wordt gevoed met + en – 10V door een kleine DC/DC converter.

Circuit diagram of the field mill.
Schema van de field mill. Het meeste gebeurd in een Arduino.

De schakeling is opgebouwd als spin, onder op het PCB materiaal waar de molen zelf van gemaakt is. De motor is een vierdraads CPU fan. De tacho uitgang bleek direct juiste timing te hebben voor de synchrone demodulatie, mits de sluiter juist geplaatst wordt. De montage van de sluiter op de motor en voor de motor zijn 3D geprint.

De PWM ingang van de fan wordt continu laag gehouden, wat bij de 5 V voeding bij deze fan resulteerde in de minimale snelheid en een meetsignaal van ongeveer 15 Hz. De meetwaarden worden over 11 periodes gemiddeld.

Rear of field mill.
De elektronica, die aan de onderzijde geplakt is.

De Arduino firmware is gedeeld op mijn Github.

Calibrating a field mill.
Kalibratie opstelling voor de field mill.

De kalibratie vond plaats met een metalen plaat op een vaste afstand welke op een instelbare potentiaal gebracht werd door een 300 V labvoeding. Dit resulteerde na instellen in de firmware in onderstaand trapje. Hiebij was de molen steeds geaard via de aarde op de labvoeding. Omdat de Macbook geen aarde heeft en dus op 115 VAC zweeft is er in deze opstelling zonder aparte aarding alsnog vrij veel interferentie van het lichtnet.

Calibration of a field mill.
Kalibratie trap in de Arduino plotter. De treden zijn 1430 V/m.

De firmware beschikt als compile optie over een ‘scope’ modus voor gebruik met de Arduino plotter. Hierin wordt niet gemeten, maar worden enkel beide ingangssignalen en de tacho ingang (hier ‘rotor’ genoemd) tegelijk getoond.

Dit geeft gelijk een duidelijk beeld van de werking van de synchrone detectie:

Scope function of the field mill.
De scope uitgang bij een iets toenemend veld. Er werd hier een geladen PVC buis boven de mill gehouden.

Monochromator als spectrometer

Hoewel dit project al weer een tijd geleden gerealiseerd is heb ik er hier door drukte, verhuizing en corona nooit over geschreven: Een opstelling rond een monochromator om optische spectra te meten.

De gehele opstelling. Links de spectrometer, rechts de voeding en meters voor de te onderzoeken led.

Op de monochromator zijn een stappenmotor en een eindschakelaar gemaakt, zodat hij door een Arduino ingesteld kan worden. Er achter zit een grote bijbehorende fotocel, welke het signaal via een zelfgebouwde voorversterker aanbiedt aan dezelfde Arduino.

De monochromator met zijn motor rechtsboven, de fotocel daar links op aangesloten. Vooraan de voorversterker. In het zwarte kastje zit de Arduino die het geheel aanstuurd.

Voor het testen en wat de golflengte betreft kalibreren van de opstelling gebruik ik een kwiklamp. Als alles ongeveer goed is ingesteld ziet het spectrum daarvan er zo uit:

De code van de Arduino voorziet in een simpele command interface en is hier te vinden: https://github.com/AartSchipper/Monochromator_controller/blob/master/Sturing.ino

De fotodiode voorversterker is opgebouwd rond de klassieke TL072, hij zal besproken worden in een aparte post.

Met deze opstelling heb ik in een samenwerking met Eluke gezellig een middag gemeten aan blauw-achtige leds voor in zijn jongleerballen.

Push to declinatie

Links de encoder, bovenop de Arduino, rechts de ledjes. De declinatie-as loopt horizontaal.

Bij de WLS zijn wij bezig een goto systeem te maken op een wat grotere telescoop, de Zunderman. Het blijkt echter een uitdaging om een motor op de decinatieas te installeren.

Daarom maakte ik als experiment een push-to oplossing. Een 10-bits encoder bepaald de positie van de as. Een Arduino leest deze uit, en vergelijkt hem met de positie zoals deze opgegeven wordt door de sturing. De signalen uit de sturing zijn die welke de stappenmotor aan zouden sturen.

Het resultaat van deze vergelijking wordt getoond op vijf serieël aanstuurbare leds. Men moet de as met de hand zo bewegen dat de middelste led groen oplicht. De resolutie is met 21 boogminuten niet geweldig, maar dan is men behoorlijk in de buurt van de gezochte positie.

Pt100 meetbrug

Onlangs kreeg ik van iemand een fraaie oude glazen driedraads Pt100 sensor cadeau. Hier had ik geen uitlezing voor, wat een goede aanleiding was om er een klein meetbrugje rond een tienslags Helipot voor te maken.
Referentie zijn 1% weerstanden op een plugin, bereik is nu 0-100 graden C, bij een resolutie van 0,1 graden C. Versterker voor de nuldetector is een CA3140 opamp.

Het is soms erg leuk iets eenvoudigs te maken op de oude manier en te ervaren hoe goed dat werkt 🙂 En dit is natuurlijk een uitgelezen excuus om toch eens naar calibratie van thermometers te gaan kijken..

Bekabeling

Dit lange weekeinde weer gewerkt aan de CNC freesmachine.
Onder andere de bekabeling afgemaakt en een Arduino met CNC shield ingebouwd. Hij loopt niet helemaal mooi en grbl spartelt wat tegen, maar wil wel netjes homen dus is de hardware in orde.
Volgende klus: Het bed.

Klokpulsgever

De eerste van vier DCF klokpulsgevers voor de WLS zit in elkaar. Deze kastjes voeden en sturen ook de 12W aan lampjes in de nevenuurwerken, en eventueel een tweede uurwerk.