lørdag den 16. februar 2013

Water Strobe Signal Generator Desktop Application

If you mount a tube with running water to a loudspeaker, a strange fenomenon occurs when you film the jet of water and send a sine wave to the loudspeaker with the same frequency as the cameras framerate. I thought it would be funny with some special features for the loudspeaker signal, so i programmed a signal generator in Flex/Air , especially for water strobe filming.

Here is a picture of the setup:



And here a video where i demonstrate the features:



The software let you control several parameters: frequency/phase, sine/square modulation, sine/square amplification and volume:



The Water Strobe Signal Generator Desktop Application 1.0 can be downloaded here:

Water Strobe 1.0

The software requires Adobe Air:

Adobe Air

Enjoy!



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


Om mig

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