lørdag den 10. november 2012

AC Dimmer for Arduino

Ever wanted to control a house lamp, a heater, a ventilator or similar 220/110 VAC equipment with Arduino? Here is a simple circuit that uses a standard AC Dimmer kit and controls it with an analog PWM output from Arduino. In this case a Vellerman-kit K8026 running at 220VAC. The kit has been modified, the potentiometer has been replaced by a LDR (Ligth Dependent Resistor) and C1 has been replaced by a 470nF for better adaption to the LDR range.



It works by leading the PWM output from Arduino through a lowpass filter made up by R2 and C3. This will stabilize the pwm to a steady voltage. The output from the lowpass filter is lead through an emitter follower to a LED, which is placed close to the LDR in a light conceiled compartment. The light from the LED then controls the resistance in the LDR.

This is a simple solution and requires no extra code in Arduino, but it has a few drawbacks. First of all it is not linear. This means that the usefull range is more narrow than the PWM output. Therefore you will need to find a suitable range for the Arduino output to operate. Second it has a little slow reaction about half a second, due to the lowpass filter.

NB! Always remember to be carefull with household power, and make sure that the left part of the circuit is totally isolated from the LDR and the AC Dimmer.

torsdag den 22. december 2011

Demografi med Nybolig

nybolig.dk kan man søge boliger og se dem på et kort. Man kan angive type og min/max pris.

Herunder ses nogle screenshots af resultaterne:



Villa/Rækkehus alle - december 2011



Villa/Rækkehus min. 10.000.000 DKK - december 2011



Villa/Rækkehus max. 200.000 DKK - december 2011



Sommerhus alle - december 2011



Sommerhus min. 5.000.000 DKK - december 2011



Sommerhus max. 400.000 DKK - december 2011



Landejendom alle DKK - december 2011



Landejendom min. 12.000.000 DKK - december 2011



Landejendom max. 600.000 DKK - december 2011



Grund alle - december 2011



Grund min. 2.000.000 DKK - december 2011



Grund max. 150.000 DKK - december 2011


torsdag den 27. oktober 2011

Få større kontrast fra billige dias-scannere med simpel HDR

Kontrasten i billige dias-scannere er desværre en del mindre, end kontrasten i de dias, der scannes. Dette giver enten hvide brændte plamager, eller meget mørke områder.

Her er et eksempel på et dias, der er scannet to gange, hhv. undereksponeret og overeksponeret:


Undereksponeret dias-scan.



Overeksponeret dias-scan.


På det første scan er alt i stuen helt mørkt, og det der er udenfor vinduet er eksponeret korrekt. På det andet scan bliver vinduet derimod til en hvid plamage.

Det lille fantastiske og gratis HDR (High Dynamic Range) program SNS-HDR Lite er vores redning. Man trækker blot billederne hen på exe-filen, så laver programmet et HDR billede. Programmet kan også bruges fra kommandolinien, hvor man bla. har mulighed for at vælge forskellige presets.

Her ses standard resultatet af HDR-sammensmeltningen af de to scans ovenfor:


HDR af dias-scans.


Her er alt fint eksponeret uden brændt hvidt eller helt mørke områder.

søndag den 23. oktober 2011

Rotary selector switch for Arduino using only one analog pin

Arduino is a great developer platform, but you quickly run out of pins, especially the digital ones. And you rarely use all 6 analog pins in an application. This selector switch uses only one analog pin.

The switch is a standard rotary selector switch with 12 positions:



In this example, I have build the switch with 8 x 1K/5% resistors and set the rotary selector switch to 8 positions. The easiest way to build it, is to solder the resistors directly onto the rotary selector switch.

Here is the diagram using 8 x 1K resistors as voltage divider:



Here is the necessary Arduino code for decoding the position:
int selectorPin;
int numOfSteps;
float divider;

void setup() 
{
  //pin for selector switch
  selectorPin = 0;

  //number of physical steps on the rotary switch
  numOfSteps = 8;
 
  //divider for decoding analog input
  divider = 1024.0 / numOfSteps; 
}

void loop() 
{
  //divide and round the input as float
  float selectorValueFloat = round(analogRead(selectorPin) / divider);
  
  //cast to integer for e.g. indexing arrays
  int selectorValue = selectorValueFloat;
}

Now we have an integer value for the position of the rotary selector switch. Hope you like it.



tirsdag den 4. oktober 2011

Elmåler overvågning med Arduino

På min elmåler sidder en lysdiode, der blinker hver gang, der er brugt 1 watt-time. Med en fotomodstand (LDR), et par transistorer og en Arduino kan man nemt aflæse disse pulser og omregne dem til aktuelt watt forbrug og lave statistik beregninger. I denne opstilling er Arduino koblet til et grafisk display til udskrift af tallene.

LDR modstanden bør sammenbygges med transistorerne, af hensyn til støj. Kredsløbet ser således ud:

LDR modstanden placeres helt tæt på lysdioden på elmåleren sammen med darlingtonkoblingen, og det hele tapes til, så der ikke slipper falsk lys ind. De 5 volt til kredsløbet og puls-signalet kan med fordel føres gennem en skærmet ledning til Arduino.
Her ses monteringen på elmålerens lysdiode:



Udgangen fra LDR-trinnet tilsluttes digital pin 2 eller 3 på Arduino. Afkodningen af pulsen i Arduino sker ved at koble et eksternt interrupt sammen med en funktion:

void setup() {
attachInterrupt(1, doCalc, FALLING);
}

Funktionen doCalc() bliver således kaldt hver gang lysdioden blinker. Her kan vi måle tiden fra det forrige blink og omregne det til watt:

void doCalc() {
timeNow = millis();
timeInterval = (timeNow - timeOld) / 1000.0;
timeOld = timeNow;
watt = 3600.00 / timeInterval;
}

For at undgå at måle prel (meget hurtige støj-pulser lige når dioden tænder og slukker) fra elektrisk støj, accepteres kun intervaller i koden over 100 millisekunder.

Er intervallet for kort, optælles en tæller med 1, og udlæses på displayet som antal fejl-pulser. Denne værdi skal jo selvsagt helst være 0, men er den på et par procent af samlet antal pulser (wattimer) er det til at leve med. I min opstilling ligger den på ca. 1%.

Til udlæsning på display beregnes desuden min, max, gennemsnit, samlet antal watttimer og målingens varighed. Her ses displayet efter at have kørt 1½ minut:



NB! Programmet kan max køre i 50 dage, herefter nulstilles timeren og tallene bliver forkerte.

Koden til Arduino og diagram til LDR-trin kan downloades her


mandag den 18. januar 2010

Hvis biblioteket var som wikipedia

En gæst ankommer til biblioteket og opsøger en bibliotekar.

gæst: Goddag jeg leder efter noget om H.C. Andersen.
bibliotekar: Ja lige et øjeblik så skal jeg se, hvad vi har.
(bibliotekaren går og kommer lidt efter tilbage)
bibliotekar: Her en en bog om H.C. Andersen.
gæst: Det lyder godt, hvem har skrevet den?
bibliotekar: Det har forskellige gæster her på biblioteket.
gæst: Altså autoriserede bidragydere?
bibliotekar: Nej der er ingen krav til bidragyderne.
gæst: Jamen kan alle og enhver skrive i jeres bøger??
bibliotekar: Ja det er også meningen.
gæst: Så jeg ved altså ikke, hvem der har skrevet de enkelte afsnit?
bibliotekar: Jo det kan vi slå op i arkivet - øjeblik..
(bibliotekaren går og kommer lidt efter tilbage)
bibliotekar: Her - det første afsnit er skrevet af Peter.
gæst: Peter hvem?
bibliotekar: Den slags oplysninger må vi desværre ikke udlevere.
gæst: Nå, ok... Men vent - hvorfor er det meste af dette afsnit streget over?
bibliotekar: Det er fordi, en anden bidragyder har erstattet det med sin egen tekst.
gæst: Jamen så kan alle og enhver altså overstrege hvad de vil og skrive deres eget istedet?!
bibliotekar: Ja det kan de, og det er skam også meningen.
gæst: Hm... Jeg tror jeg vil finde en boghandel med almindelige bøger!
bibliotekar: Bevares - farvel.

Om mig

Jeg er født på Frederiksberg 1966 af min mor. Nu bor jeg bare på Vesterbro. Jeg bærer briller.