Hoekserre dak

14 maart 2020

Dit gaat ‘m worden:

 Een lariks houten frame met 3 lariks 15×15 cm palen, bevestigd aan de muren van 2 garages en daartussen een houten frame met 5×15 cm spantbalken.  Dus een open dak, zonder verticale frontpaal of -palen.

De voorste balken zijn bevestigd aan de hoeken van beide garages en met een lange schoorbalk verbonden met de dubbel uitgevoerde frontbalken.

De standaard enkele hoek aan de rechterzijde van een typisch serredak is aangepast naar twee hoeken van 45 graden zodat aan de rechter voorkant van het serredak een brede entree komt, zonder palen.  De reguliere linker voorkant van het dak staat op een paal tegen de linker garage aan (nr. 22).

Op het dak worden 16mm transparante kanaalplaten geplaatst, met aluminium afwerking rondom.

Aan de 2 lage zijden van het serredak komt een smalle 125 mm witte kanaal dakgoot ‘Nicoll Ovation’, deze heeft ook een 45 graden buitenhoek in het assortiment.

nicoll-ovation-wit-buitenhoekstuk-135

De bouwtekening:

Logistiek:  Eerst alle spullen bestellen en/of ophalen:

Het basis dakontwerp:

De eerste proefopzet van de schoren in plaats van verticale palen:

Om zeker te zijn dat de opzet gaat werken, heb ik eerst een proefbouw gedaan met lichter hout.  De draagkracht is groot, maar de gebruikte materialen buigen door wanneer ik veel gewicht in het midden van de constructie plaats.

Daarom is in de uiteindelijke versie gekozen voor een constructie met douglas lariks houten balken en palen waarop normaal gesproken een plat dak met mastiek kan worden gebouwd.

Dag 1: Het frame op maat maar nog los aan elkaar

 

Dag 2: Detail van de ingeklemde schoorbalk

Dag 2: De basisconstructie is klaar

De constructie is vrij dragend, waarbij de enige ankerpunten de 3 balken zijn die aan de muren van de garages zijn verankerd met pluggen en lange tellerkop schroeven.
De hele constructie is ingeklemd tussen beide garages dus is er geen mogelijkheid dat er iets los komt.  Alle balkverbindingen zijn gebout met 16 centimeter lange M10 slotbouten, ringen en borgmoeren.  De liggers zijn met raveeldragers en 5cm lange 5mm dikke zelfborende raveelschroeven bevestigd.  Alle houtverbindingen zijn daarnaast ook vastgeschroefd met lange zelfborende Tellerkop hout-constructieschroeven.

Dag 3: De liggers geplaatst en de eerste 2 kanaalplaten gemonteerd

Zoals je op de foto’s kan zien is het afschot naar rechts, de platen liggen ook van links naar rechts.
Het afschot is maar 4 cm per meter, anders komt de balk aan de rechterkant onder de 2 meter doorloophoogte.

Dag 4: Alle kanaalplaten geplaatst en alle afwerk profielen geplaatst, houtveredeling aangebracht

Dag 5: Met gemonteerde goot en (bijna) alles opgeruimd

Met regengoot

En  nog even zoals het was, met de oude stenen en de oude aanbouwtjes, op de foto allemaal gedemonteerd.
Let ook op alle begroeiing…Overzicht 2019 achtertuin, met de gesloopte opslag nog in de tuin

Ga voor het bestel- en kostenoverzicht HIERHEEN

En met de afdichting er omheen:

Tijdelijk even de inhoud van de garage in de serre gezet, op een paar kunststof rijplaten…

Afneembare golftas houder op mijn 2004 Heritage

Om de golftas op mijn motor mee te nemen gebruikte ik voorheen op de Buell Ulysses de rechter aluminium zijkoffer. Daar paste een kleine tas goed in en omdat het deksel aan de achterkant opende, was de tas goed te vervoeren IN de koffer.  Natuurlijk stak er wel een stuk uit maar dat is altijd prima gelukt.

Met de Heritage ligt het wat lastiger omdat de originele leren tassen niet erg diep zijn en daardoor niet genoeg steun geven aan zo’n lange tas.

Dus eerst de tassen afneembaar gemaakt met de originele Harley detachable beugelset en montagekit.  Gelijk twee sets beugels aangeschaft zodat er ook een beugel kan worden verbouwd tot golftas draagbeugel.

Het moet er ongeveer zo gaan uitzien:

 

 

 

 

En zo is ie geworden:

Geeetech A30M 3d printer

UPDATE MET NIEUW Duet2wifi MOTHERBOARD

Midden juni 2020 ben ik gestart met de Geeetech A30M desktop 3d printer.
De printer kan 2 kleuren gemixed printen met 2 filament geared drive units bovenop het frame en een fan voor elke aanvoer naar het gecombineerde hotend.

Op deze printer zijn een paar aanpassingen nodig, als je er echt goed mee wilt werken.
Allereerst heb ik veel last gehad van de standaard herrie van de 24 Volts fan onder de bodemplaat, die moet zorgen voor koeling van het motherboard. Deze fan draait altijd op vol vermogen.
Ik heb er een regelaar tussen geplaatst met bediening aan de linker zijkant, via een geboord gat. de regelaar heb ik met 2 tie-wraps vastgezet door de koelsleuven aan de linker zijkant. Het draaiknopje komt net door de kast heen en je ziet er nauwelijks iets van. De meeste motherboards die ik gebruik hebben geen fan nodig voor de koeling omdat ze vrij in het open frame zijn geplaatst maar de A30M heeft een gesloten behuizing waardoor een beetje luchtcirculatie wel nodig is. Plan is om een thermostaatregeling toe te voegen zodat het knopje niet meer nodig is. Later. De regelaar staat op de stand dat er wel veel luchtverplaatsing is maar zonder het gieren van de fan.

Tweede aanpassing is de toevoeging van een Geeetech 3d touch op het hotend. De beugel was meegeleverd bij de printer, geschikt voor zowel een dikke inductieve sensor als voor de 3d touch sensor. Fijn is dat de software (of firmware, zo je wilt) als geschikt is vanaf fabriek voor autoleveling. Let wel op de juiste plaatsing van de connectors, vanaf de voorzijde gezien moeten de bruine en zwarte draden naar rechts worden gemonteerd.

Nadeel is dat de firmware af-fabriek niet echt lekker werkt met auto leveling. In het midden van het hotbed gaat alles prima maar bij grotere prints merkte ik dat de eerste laag erg verschillend werd geprint, waardoor alles steeds loskwam. Nu werk ik dus met handmatige leveling terwijl er automatische leveling mogelijk is..

Het hotbed is lekker groot met een werkbare omvang van 320x320mm. De printhoogte is 420mm.

De prijs was ruim 400 Euro, en de levering was vanuit Duitsland.

Ik raad iedereen aan om ALLES vast te zetten en vooral de blokhaak erbij te pakken. Mijn exemplaar was echt niet goed gemonteerd. Alle draden waren OK maar alle bouten zaten of te vast dan wel niet vast. Daar kwam ik pas achter bij de eerste proefprint. Gelijk gestopt en alles nagelopen. Let vooral op de rolwielen van het hotbed. Daar kun je moeilijk bij maar in mijn geval waren de stelwielen helemaal niet gesteld en ze draaiden dus niet mee. Nadeel van zo’n desktopprinter is dat je nauwelijks plek hebt onder het hotbed.
De verticale V-profielen waren niet haaks gemonteerd op het bovenste profiel. Dat is lastig te herstellen omdat alles doorgeboord is en met bouten is vastgezet. Ik adviseer om aan de achterkant in de bovenste 2 hoeken hoekverstevigers te plaatsen. Ik heb ze in bestelling en daarna kunnen ze er gelijk op.

En.. wat sommige grote printers wel hebben en de A30M niet: Extra stabilisatiestangen naar de voorkant (of naar achter, dat kan ook) zodat de verticale profielen niet kunnen bewegen. Nu zit er wanneer je een beetje kracht uitoefent ca. 2mm speling op, ondanks de stevige bevestiging aan de desktop behuizing.

Vialle D4 LPG verdamper vervangen door Lovato RGV090 van mijn Citroën ID20 cabrio (1970)

De Vialle D4 LPG verdamper heeft eigenlijk nooit lekker gewerkt in mijn ID20 en doordat de Lovato RGV090 speciaal is gemaakt voor kleinere vermogens in auto’s met standaard carburateur(s) zoals in de ID20 heb ik besloten om de Lovato in de auto te zetten, en de Vialle eruit te halen.

Ik had de Vialle D4 al eerder gereviseerd met een zogenaamde ‘kit’.  In deze kit werden alle diafragma’s, de naald en de rubbers meegeleverd.  Maar na de revisie heeft het ook nooit echt goed gewerkt. Of het loopt stationair prima en niet op vol vermogen of andersom.  Het lijkt er op dat de Vialle D4 die ik heb, alleen maar lekker werkt wanneer je meer vermogen gebruikt.  In de specificaties kun je wel zien dat de Vialle ook geschikt is voor motoren met meer vermogen.  Daarnaast is de Vialle wel een behoorlijk oud ontwerp.  Misschien dat modernere verdampers beter zijn ontwikkeld, vooral wanneer je er één neemt met het juiste vermogensbereik.

De reden van het niet goed werken heeft na veel onderzoek met een aantal zaken te maken.  In de eerste plaats is de verdamper eigenlijk veel te groot voor het gevraagde vermogen van de motor.  De motor levert maximaal 90 Pk en de Vialle verdamper zit dan eigenlijk nog in het onderste bereik.  Gevolg is dat alles wel werkt mar dat het oppakken op basis van de vraag aan LPG niet soepel werkt.  Dat merk je met voorzichtig optrekken.  Je moet dan veel gas geven om effect te hebben.

Op zich op de snelweg geen probleem maar wel lastig wanneer je rustig in de stad of op binnenwegen rijdt.

De Vialle D4 heeft geen vacuümaansluiting, maar schakelt uit en aan met een elektrische spoel. De D4 kan dus ook gebruikt worden voor ‘single point injection systems’.

Maar, ik wil de LPG-installatie alleen maar gebruiken als old school zelfaangedreven carburateurinstallatie.

Daarom heb ik eind februari 2020 een nieuwe Lovato RGV090 geplaatst, die in principe een vacuümgestuurde verdamper is met een elektrische choke spoel.

 

Op de Lovato verdamper is slechts 1 instelling mogelijk, en dat is ongeveer het punt waar de verdamper op commando LPG begint te geven (en hoeveel, bij een specifieke afzuiging).  De grote plastic schroef die dit doet drukt op een veer die het diafragma in de verdamper moeilijker laat bewegen als de schroef wordt ingedraaid (met de klok mee) en het diafragma makkelijker laat bewegen bij het aanzuigen van de luchtinlaat bij het uitlaten.  Dit betekent in principe dat er meer LPG naar de motor gaat als de schroef meer naar buiten gedraaid wordt.

Dit is de instelling die je moet instellen op 1,5% CO bij 800-1000 RPM, de zogenaamde stationaire instelling.

Als je dit instelt, is de 2e instelling die je moet maken de doorvoerschroef die ergens in het pad tussen de carburateur en de verdamper wordt geplaatst.  Stel deze schroef halverwege in wanneer je de CO op 1,5% bij stilstaand toerental instelt.

Probeer na de stationaire instelling uit hoe de motor reageert op het indrukken van het gaspedaal.  Als de motor niet snel en stevig genoeg reageert, draai dan de doorvoerschroef een beetje uit totdat de reactie bij het indrukken van het gaspedaal vergelijkbaar is met de situatie bij benzine.

Rij vervolgens een proefrit met de auto en draai de doorvoerschroef elke keer een beetje terug totdat je bij vol gas het vermogen verliest. Draai vervolgens deze schroef 0,25 tot 0,5 slag open en je bent klaar!

PS: De ene schroef op de verdamper is GEEN stationaire schroef.  Hoewel het stationaire toerental wel wordt beïnvloed door meer/minder LPG, kun je het alleen goed instellen als je een CO-meter gebruikt, anders kun je je auto verpesten door een te schrale afstelling.

Als je het volledig correct wilt doen, moet je de CO bij 3000 RPM controleren en instellen op 2,5- max 4 %.  De balans tussen stationair toerental en toerental 3000 is moeilijk, maar zorg ervoor dat je NOOIT onder de minimumwaarden van 1,5% CO bij stationair en 2,5% CO bij 3000 RPM komt!  En – zorg ervoor dat je beide schroeven gebruikt bij het afstellen van de CO percentages.  Vooral bij 3000 RPM moet je de schroef die in de LPG-leiding zit, afstellen.

Nog beter:  Als je een betere installatie wilt, zorg dan voor een systeem dat gebruik maakt van een Lambdasonde in de uitlaat die de uitlaatgaswaarden van CO afleest om de hoeveelheid geleverde LPG te regelen.  Dergelijke systemen zijn verkrijgbaar bij Lovato en Vialle, beide met ingespoten EN gecarboneerde LPG-systemen.  Het vereist wel wat boor- en laswerk aan de uitlaat van de auto voor het monteren van de lambdasonde, maar dat is allemaal heel goed mogelijk.

Ik heb ooit de 123LPG kit hiervoor gekocht, maar die moet ik nog steeds monteren. De plaatsing van de Lamdasonde in de vlampijp is er nog nooit van gekomen, maar ik heb een nieuwe vlampijp liggen om dit ooit te doen.

 

 

 

Vialle D4 LPG verdamper vervangen door Lovato RGV090 van mijn Citroën ID19 cabrio (1970)

De Vialle D4 LPG verdamper heeft eigenlijk nooit lekker gewerkt in mijn ID20 en doordat de Lovato RGV090 speciaal is gemaakt voor kleinere vermogens in auto’s met standaard carburateur(s) zoals in de ID20 heb ik besloten om de Lovato in de auto te zetten, en de Vialle eruit te halen.

Ik had de Vialle D4 al eerder gereviseerd met een zogenaamde ‘kit’.  In deze kit werden alle diafragma’s, de naald en de rubbers meegeleverd.  Maar na de revisie heeft het ook nooit echt goed gewerkt. Of het loopt stationair prima en niet op vol vermogen of andersom.  Het lijkt er op dat de Vialle D4 die ik heb, alleen maar lekker werkt wanneer je meer vermogen gebruikt.  In de specificaties kun je wel zien dat de Vialle ook geschikt is voor motoren met meer vermogen.  Daarnaast is de Vialle wel een behoorlijk oud ontwerp.  Misschien dat modernere verdampers beter zijn ontwikkeld, vooral wanneer je er één neemt met het juiste vermogensbereik.

De reden van het niet goed werken heeft na veel onderzoek met een aantal zaken te maken.  In de eerste plaats is de verdamper eigenlijk veel te groot voor het gevraagde vermogen van de motor.  De motor levert maximaal 90 Pk en de Vialle verdamper zit dan eigenlijk nog in het onderste bereik.  Gevolg is dat alles wel werkt mar dat het oppakken op basis van de vraag aan LPG niet soepel werkt.  Dat merk je met voorzichtig optrekken.  Je moet dan veel gas geven om effect te hebben.

Op zich op de snelweg geen probleem maar wel lastig wanneer je rustig in de stad of op binnenwegen rijdt.

De Vialle D4 heeft geen vacuümaansluiting, maar schakelt uit en aan met een elektrische spoel. De D4 kan dus ook gebruikt worden voor ‘single point injection systems’.

Maar, ik wil de LPG-installatie alleen maar gebruiken als old school zelfaangedreven carburateurinstallatie.

Daarom heb ik eind februari 2020 een nieuwe Lovato RGV090 geplaatst, die in principe een vacuümgestuurde verdamper is met een elektrische choke spoel.

 

Lovato RGV090

 

Op de Lovato verdamper is slechts 1 instelling mogelijk, en dat is ongeveer het punt waar de verdamper op commando LPG begint te geven (en hoeveel, bij een specifieke afzuiging).  De grote plastic schroef die dit doet drukt op een veer die het diafragma in de verdamper moeilijker laat bewegen als de schroef wordt ingedraaid (met de klok mee) en het diafragma makkelijker laat bewegen bij het aanzuigen van de luchtinlaat bij het uitlaten.  Dit betekent in principe dat er meer LPG naar de motor gaat als de schroef meer naar buiten gedraaid wordt.

Dit is de instelling die je moet instellen op 1,5% CO bij 800-1000 RPM, de zogenaamde stationaire instelling.

Als je dit instelt, is de 2e instelling die je moet maken de doorvoerschroef die ergens in het pad tussen de carburateur en de verdamper wordt geplaatst.  Stel deze schroef halverwege in wanneer je de CO op 1,5% bij stilstaand toerental instelt.

Probeer na de stationaire instelling uit hoe de motor reageert op het indrukken van het gaspedaal.  Als de motor niet snel en stevig genoeg reageert, draai dan de doorvoerschroef een beetje uit totdat de reactie bij het indrukken van het gaspedaal vergelijkbaar is met de situatie bij benzine.

Rij vervolgens een proefrit met de auto en draai de doorvoerschroef elke keer een beetje terug totdat je bij vol gas het vermogen verliest. Draai vervolgens deze schroef 0,25 tot 0,5 slag open en je bent klaar!

PS: De ene schroef op de verdamper is GEEN stationaire schroef.  Hoewel het stationaire toerental wel wordt beïnvloed door meer/minder LPG, kun je het alleen goed instellen als je een CO-meter gebruikt, anders kun je je auto verpesten door een te schrale afstelling.

Als je het volledig correct wilt doen, moet je de CO bij 3000 RPM controleren en instellen op 2,5- max 4 %.  De balans tussen stationair toerental en toerental 3000 is moeilijk, maar zorg ervoor dat je NOOIT onder de minimumwaarden van 1,5% CO bij stationair en 2,5% CO bij 3000 RPM komt!  En – zorg ervoor dat je beide schroeven gebruikt bij het afstellen van de CO percentages.  Vooral bij 3000 RPM moet je de schroef die in de LPG-leiding zit, afstellen.

Nog beter:  Als je een betere installatie wilt, zorg dan voor een systeem dat gebruik maakt van een Lambdasonde in de uitlaat die de uitlaatgaswaarden van CO afleest om de hoeveelheid geleverde LPG te regelen.  Dergelijke systemen zijn verkrijgbaar bij Lovato en Vialle, beide met ingespoten EN gecarboneerde LPG-systemen.  Het vereist wel wat boor- en laswerk aan de uitlaat van de auto voor het monteren van de lambdasonde, maar dat is allemaal heel goed mogelijk.

Ik heb ooit de 123LPG kit hiervoor gekocht, maar die moet ik nog steeds monteren. De plaatsing van de Lamdasonde in de vlampijp is er nog nooit van gekomen, maar ik heb een nieuwe vlampijp liggen om dit ooit te doen.

 

 

 

Ronde klok WS2812 & Arduino nano

ABOVE: Circular clock, completed project, reading 05h:41m and crossing to 05h:42m.  Red=hours, Green=minutes

Above: Clock without case, with open components.

READ THIS ARTICLE IN ENGLISH

In de bovenstaande video zie je alle benodigde onderdelen voor de electronica.  Een arduino Nano, een tijdmodule LS3231 met batterij back-up en een 4-delige ring met elk 15 stuks WS2812 LED’s die zorgen voor een 160mm 60 LED units klok.  Je kunt hem bouwen als een open gebouwde unit zoals hierboven afgebeeld met draad of in een 3d printbare slanke behuizing die ik heb ontwikkeld.  Zie de foto’s hieronder.

Voor het bouwen van deze mooie nauwkeurige klok, kun je mijn ontwerp files voor de behuizing gebruiken op elke 3d printer met een horizontale bed maat van minimaal 165x165mm.

Download de beide print STL’s OF van de Prusa gedeelde site waar ik deze ontwerpen heb geupload (zoek op de prusa site naar ws2812 circulaire arduino klok).

OF haal het STL bestand voor de VOORKANT van de klok van mijn website HIER

EN haal het STL bestand voor de ACHTERKANT van de klok van mijn website HIER

Eén STL is voor de achterkant en bevat de Nano box, de andere is voor de voorkant van de klok.  Positioneer de achterste STL 180 graden (dus omhoog gaat omlaag) in uw slicer, zodat zowel de doos als de LED-behuizing op Z-0 niveau zijn, d.w.z. naar beneden gericht op hetzelfde horizontale niveau.   De voorkant kan het best geprint worden met de platte kant naar beneden.  ABS is niet aan te raden omdat het minder stijf is, maar zal waarschijnlijk ook werken.  Voor mij werkt PETG of PLA het beste.

Gebruik wit filament voor het voorste deel, de achterkant kan elke kleur zijn die je wilt.

In de cirkel worden de 4 WS2812 LED segmenten in 1 volledige cirkel van ongeveer 160mm geplaatst.

Als je de elektronica aan de achterkant hebt aangesloten, schuift de voorkant er zo overheen. Geen lijm nodig.  Maar de LED ring kan best op 4 plaatsen met een druppel hotglue aan de basis van de achterste behuizing gelijmd worden.  Dit kun je het beste doen als je zeker weet dat alles goed werkt.

De LED onderdelen zijn verkrijgbaar op o.a. banggood , aliexpress en zo, zoek naar 60LED circle WS2812 die de 160 mm buitendiameter heeft.

Elke LED vertegenwoordigt een punt voor seconden, minuten of als uur indicator.

De kleuren bepalen de functie.  Blauw wordt ook gebruikt als kwartier indicator met minder intensiteit, om een gevoel van positionering te hebben voor de andere LEDS als het donker is.

Kijk naar de video hierboven van het ‘open’ demonstratiemodel om te begrijpen hoe het werkt.

Hieronder vindt je de Arduino code voor de gebruikte Nano3, as-is. het werkt voor mij, en in de code vindt u ook alle benodigde elektrische aansluitingen en de specificaties van de gebruikte Time module.

Haal de Arduino code HIER

Wanneer aangesloten op je PC, kun je de Arduino programmeren en via de seriële interface kun je naderhand speciale instellingen van de klok wijzigen, zoals helderheid, speciale kwartierverlichtingsindicatoren, enzovoort. het staat allemaal in de code hieronder.

De aansturing kan via een seriële interface met de usb ingang van de Arduino, via een terminalprogramma zoals YAT of met de interface van het Arduino IDE programma.

De commando’s zijn:

f; fader UIT
F; fader AAN
m (getal); dim de 4 blauwe marker LED’s met waarde (getal)
S; synchroniseren met RTC tijd
s; synchroniseren met systeemtijd (computer)
t (tijd); systeemtijd veranderen in:
b; helderheid van alle niet-marker LED’s

Doneer a.j.b. $1 aan mijn paypal account als je (delen van) mijn ontwikkelde materialen gebruikt, zodat ik kan doorgaan met het delen van leuke dingen voor jou om te downloaden

Ik hoop dat alles goed gaat lukken!

Succes,

Jan

De Arduino code, te gebruiken voor het programmeren van de Arduino Nano3 is beschikbaar onderaan dit bericht als platte tekst om te importeren in een leeg arduino bestand (met kopiëren en plakken).

Zorg ervoor dat je alleen de bibliotheken en tijdmodule gebruikt die in de code zijn aangegeven!  De gebruikte tijdmodule is van de betere generatie die de tijd zeer goed vasthoudt, ook in stand-by.

Gebruik voor het verbinden van de draden tussen de neopixel segmenten, de arduino en de tijdmodule een temperatuurgeregelde soldeerbout.  Gebruik een ventilator als je aan het solderen bent en adem geen giftige gassen in tijdens het solderen.

De Arduino code is hieronder weergegeven, te importeren in Arduino IDE in een .ino bestand.  Met de Arduino IDE moet je vervolgens de code compileren om de Arduino Nano geflasht te krijgen met het programma.


/**
* NeoClock
*
* Clock using 60 WS2812B/Neopixel LEDs and DS3231 RTC
* Small changes and updates made by jan Griffioen, Amsterdam Europe 2018-2021
* Libraries needed:
* * Adafruit NeoPixel (Library Manager) – Phil Burgess / Paint Your Dragon for Adafruit Industries – LGPL3
* *
* * Arduino Timezone Library (https://github.com/JChristensen/Timezone) – Jack Christensen – CC-BY-SA
* * Time Library (https://github.com/PaulStoffregen/Time) – Paul Stoffregen, Michael Margolis – LGPL2.1
*/

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

#if defined(ESP8266)
#include <pgmspace.h>
#else
#include <avr/pgmspace.h>
#endif

/* for software wire use below
#include <SoftwareWire.h> // must be included here so that Arduino library object file references work
#include <RtcDS3231.h>

SoftwareWire myWire(SDA, SCL);
RtcDS3231<SoftwareWire> Rtc(myWire);
for software wire use above */

/* for normal hardware wire use below */
#include <Wire.h> // must be included here so that Arduino library object file references work
#include <RtcDS3231.h>
RtcDS3231<TwoWire> Rtc(Wire);
/* for normal hardware wire use above */

#include <TimeLib.h> //http://www.arduino.cc/playground/Code/Time
#include <Timezone.h> //https://github.com/JChristensen/Timezone

#include <EEPROM.h>

//Central European Time (Frankfurt, Paris)
TimeChangeRule CEST = {“CEST”, Last, Sun, Mar, 2, 120}; //Central European Summer Time
TimeChangeRule CET = {“CET “, Last, Sun, Oct, 3, 60}; //Central European Standard Time
Timezone CE(CEST, CET);

TimeChangeRule *tcr; //pointer to the time change rule, use to get the TZ abbrev
time_t utc;

#define PIN 5

unsigned long lastMillis = millis();
byte dimmer = 0x88;
byte hmark = 0;

byte ohour=0;
byte ominute=0;
byte osecond=0;

boolean fader=true;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

void setup() {

Serial.begin(57600);

strip.begin();
strip.setBrightness(50);

// Some example procedures showing how to display to the pixels:
// colorWipe(strip.Color(255, 0, 0), 50); // Red
//colorWipe(strip.Color(0, 255, 0), 50); // Green
//colorWipe(strip.Color(0, 0, 255), 50); // Blue
//colorWipe(strip.Color(0, 0, 0, 255), 50); // White RGBW
// Send a theater pixel chase in…
//theaterChase(strip.Color(127, 127, 127), 50); // White
theaterChase(strip.Color(127, 0, 0), 50); // Red
//theaterChase(strip.Color(0, 0, 127), 50); // Blue

//rainbow(20);
rainbowCycle(2);
//theaterChaseRainbow(50);

strip.clear();
strip.show(); // Initialize all pixels to ‘off’

Rtc.Begin();

Rtc.Enable32kHzPin(false);
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone);

if (!Rtc.GetIsRunning())
{
Serial.println(“Rtc was not actively running, starting now”);
Rtc.SetIsRunning(true);
}

if (!Rtc.IsDateTimeValid())
{
// Common Cuases:
// 1) the battery on the device is low or even missing and the power line was disconnected
Serial.println(“Rtc lost confidence in the DateTime!”);
}

byte eechk = EEPROM.read(0);
if(eechk == 0xAA) { //Assume this is our config and not a fresh chip
dimmer = EEPROM.read(1);
hmark = EEPROM.read(2);
fader = EEPROM.read(3);
}

timeSync();
}

void calcTime(void) {
utc = now();
CE.toLocal(utc, &tcr);
ohour = hour(utc);
ominute = minute(utc);
if(osecond != second(utc)) {
osecond = second(utc);
lastMillis = millis();

if(ominute == 0 && osecond == 0) {
//Every hour
timeSync();
}
}
}

void addPixelColor(byte pixel, byte color, byte brightness) {
color *= 8;
uint32_t acolor = brightness;
acolor <<= color;
uint32_t ocolor = strip.getPixelColor(pixel);
ocolor |= acolor;
strip.setPixelColor(pixel, ocolor);
}

void drawClock(byte h, byte m, byte s) {
strip.clear();

addPixelColor(m, 1, dimmer);

if(hmark > 0) {
for(byte i = 0; i<12; i++) {
addPixelColor((5*i), 2, hmark);
}
}

h %= 12;
h *= 5;
h += (m/12);
addPixelColor(h, 2, dimmer);
// 0x RR GG BB

if(fader) {
byte dim_s1 = dimmer;
byte dim_s2 = 0;
byte px_s2 = s+1;
if(px_s2 >= 60) px_s2 = 0;
unsigned long curMillis = millis()-lastMillis;
if(curMillis < 250) {
dim_s2 = 0;
dim_s1 = dimmer;
}else{
dim_s2 = map(curMillis, 250, 1000, 0, dimmer);
dim_s1 = dimmer – map(curMillis, 250, 1000, 0, dimmer);
}

// Add blue low intensity dots for 12(0),3, 6 and 9 O’çlock to verify where the clock is positioned..
addPixelColor(15, 128, 10);
addPixelColor(30, 128, 10);
addPixelColor(45, 128, 10);
addPixelColor(0, 128, 40);

addPixelColor(s, 0, dim_s1);
addPixelColor(px_s2, 0, dim_s2);
}else{
addPixelColor(s, 0, dimmer);
}

// add a background color
// setBrightness(Serial.parseInt());
// uint16_t j;
// for(j=0; j<60; j++) { // 1 cycles of colors on wheel
// strip.setPixelColor(j, Wheel(((j * 256 / strip.numPixels()) + j) & 255));
// }

strip.show();
}

byte rounds = 0;

void loop() {
calcTime();

if(rounds++ > 100) {
Serial.print(ohour);
Serial.print(“:”);
Serial.print(ominute);
Serial.print(“:”);
Serial.print(osecond);
Serial.println(“(C)JG-2020”);
rounds = 0;

}
//rainbow(21);
if (osecond == 59){theaterChase(strip.Color(0, 0, 127), 40); }// Blue; }
//if (ominute == 59 AND osecond == 59){theaterChase(strip.Color(0, 127, 0), 50); }// Green}
//if (ohour == 11 AND ominute == 59 AND osecond == 59){theaterChase(strip.Color(127, 127, 0), 50); }// Green}
else {drawClock(ohour,ominute,osecond);}

delay(10);

chkSer();
}

void timeSync(void) {
RtcDateTime dt = Rtc.GetDateTime();
setTime(dt.Hour(),dt.Minute(),dt.Second(),dt.Day(),dt.Month(),dt.Year());

Serial.print(“Synced to: “);
Serial.print(dt.Year());
Serial.print(“-“);
Serial.print(dt.Month());
Serial.print(“-“);
Serial.print(dt.Day());
Serial.print(“-“);
Serial.print(dt.Hour());
Serial.print(“-“);
Serial.print(dt.Minute());
Serial.print(“-“);
Serial.println(dt.Second());
}

void timeSave(void) {
utc = now();

RtcDateTime store = RtcDateTime(year(utc), month(utc), day(utc), hour(utc), minute(utc), second(utc));
Rtc.SetDateTime(store);

Serial.print(“Synced to: “);
Serial.print(year(utc));
Serial.print(“-“);
Serial.print(month(utc));
Serial.print(“-“);
Serial.print(day(utc));
Serial.print(“-“);
Serial.print(hour(utc));
Serial.print(“-“);
Serial.print(minute(utc));
Serial.print(“-“);
Serial.println(second(utc));

}

void setBrightness(byte brightness) {
dimmer = brightness;
}

void chkSer(void) {
unsigned int iy;
byte im,id,iH,iM,iS;

if(!Serial.available()) return;

switch(Serial.read()) {
case ‘b’:
setBrightness(Serial.parseInt());
Serial.print(F(“Brightness changed to: “));
Serial.println(dimmer);
EEPROM.put(0, 0xAA);
EEPROM.put(1, dimmer);
break;
case ’t’:
iy = Serial.parseInt();
im = Serial.parseInt();
id = Serial.parseInt();
iH = Serial.parseInt();
iM = Serial.parseInt();
iS = Serial.parseInt();
setTime(iH,iM,iS,id,im,iy);
Serial.println(F(“System time changed”));
break;
case ‘f’:
fader = false;
EEPROM.put(0, 0xAA);
EEPROM.put(3, 0);
Serial.println(F(“Fader off”));
break;
case ‘F’:
fader = true;
EEPROM.put(0, 0xAA);
EEPROM.put(3, 1);
Serial.println(F(“Fader on”));
break;
case ‘m’:
hmark = Serial.parseInt();
EEPROM.put(0, 0xAA);
EEPROM.put(2, hmark);
Serial.println(F(“HMark changed”));
break;
case ‘s’:
timeSync();
Serial.println(F(“Synced RTC to System”));
break;
case ‘S’:
timeSave();
Serial.println(F(“Synced System to RTC”));
break;
default:
Serial.println(‘?’);
}
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}

void rainbow(uint8_t wait) {
uint16_t i, j;

for(j=0; j<256; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i+j) & 25));//255
}
strip.show();
delay(wait);
}
}

// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
uint16_t i, j;

for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
}

//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
for (int j=0; j<4; j++) { //do 4 cycles of chasing
for (int q=0; q < 3; q++) {
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, c); //turn every third pixel on
}
strip.show();

delay(wait);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}

//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait) {
for (int j=0; j < 256; j++) { // cycle all 256 colors in the wheel
for (int q=0; q < 3; q++) {
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, Wheel( (i+j) % 255)); //turn every third pixel on
}
strip.show();

delay(wait);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r – g – b – back to r.
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 – WheelPos;
if(WheelPos < 85) {
return strip.Color(255 – WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 – WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 – WheelPos * 3, 0);
}

K40 CO2 lasersnijder

Mijn Chinese lasercutter die ik al in 2014 kocht, heeft in de loop der jaren een upgrade gekregen.  Zoals vele anderen heb ik het koelsysteem voor de laserbuis in de behuizing gekregen, een aantal LED lampjes binnenin toegevoegd en ook een luchtpomp voor de laserkop toegevoegd.

Al met al werkt de machine nu goed, maar het relatief kleine werkgebied blijft de bottleneck om deze machine voor echt interessante projecten te gebruiken.

Midden 2020 heb ik de lasersnijder gebruikt voor een paar projecten waarbij ik reeksen gesneden acrylaat nodig had.  De machine deed dit vlekkeloos, maar ik heb hem wel buiten gezet om te voorkomen dat er rook in ons huis zou komen.

Ik heb wel wat ideeën om de machine te upgraden met een grotere werkruimte en de elektronica en waterkoeling in een aparte behuizing te plaatsen.  Daar zijn geen materialen voor nodig, behalve 3 lineaire rails en wat aluminium profielen.  Maar- (status mei-2021) ik zal alleen aan dit project beginnen als er werk aan de machine is, aangezien hij al goed werkt zoals hij nu is, hoewel de werkruimte beperkt is.

Ik gebruik Inkscape (freeware) voor het maken van ontwerpen in SVG en importeer deze .SVG bestanden in K40whisperer (ook freeware) die dan de benodigde Gcode naar de K40 lasercutter kan sturen. Dit werkt allemaal erg goed en snel, je hebt hier geen snelle computer voor nodig.  Ik gebruik hiervoor een 10 jaar oude dedicated HP laptop.

In de toekomst wil ik deze lasercutter hetzelfde bord laten gebruiken als mijn grote LED lasersnijder, zodat ik GRBL op beide kan gebruiken.

Zoals je waarschijnlijk weet, kan een K40 of een andere CO2 lasersnijder een bepaald soort materiaal snijden terwijl een gewone LED lasersnijder andere soorten materialen beter kan snijden, als gevolg van het gebruikte soort licht op beide die verschillen in golflengte.

De CO2 snijder kan gemakkelijk acryl snijden en de LED lasersnijder kan dat niet.

De LED snijder heeft een soort stof in het te snijden materiaal nodig om goed te werken.

Wees ervan bewust dat de veiligheidsbril die je nodig hebt ook specifiek is voor één van beide machines.

The original driver board of the K40 CO2 lasercutter
First cut on a piece of tripledeck 4mm multiplex for my clock pieces
The clock’s interior and stand pieces, wood and acrylic. Both cut on the K40
The inside of the K40’s work space with the debree on the bottom. The air hose is green silicon. Also added an emergency cutoff switch for the laser tube. open the hood and the power stops.
The electronics and water cooling on the Right hand side of the K40’s housing. The air cooled radiators are just out of sight to the most right hand side of the housing, 3 pieces of 40x40mm
The acrylic cut for the clock, done in 1 time. This is 3 mm thick.
The thermostatic control of the coolant pump, taken out of its case to set the working temperatures
My solution for the cutting bed was to use an old footboard maze and I welded 4 nuts in it with long bolts that act as feet. This makes it possible to adjust the height 1x for optimum focussing the laser in the center of the to be cut material.
error: Content is protected !!