Hackster is hosting Hackster Holidays, Ep. 7: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Friday!Stream Hackster Holidays, Ep. 7 on Friday!
Mirko Pavleski
Published © GPL3+

DIY Advanced Arduino Colloidal Silver Generator

How to make an advanced colloidal silver device with Arduino, which has all the features of such commercial devices.

BeginnerFull instructions provided3 hours5,445
DIY Advanced Arduino Colloidal Silver Generator

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
×1
Standard LCD - 16x2 White on Blue
Adafruit Standard LCD - 16x2 White on Blue
×1
l293d Motor Driver IC
×1
Linear Regulator (7805)
Linear Regulator (7805)
×1
Rotary potentiometer (generic)
Rotary potentiometer (generic)
×1
Resistor 1k ohm
Resistor 1k ohm
×1
Resistor 221 ohm
Resistor 221 ohm
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free

Story

Read more

Schematics

Schematic

...

Code

Arduino Code

C/C++
...
// Arduino DC motor speed and direct control
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 9, 5, 4, 3, 2);

#define pot      0
#define pwm1     10
#define pwm2    11

boolean direct = 0;
int current;
int Shutdown=0;
int mA = 0;
int hours;
int minutes;
int seconds;
long hour = 3600000; // 3600000 milliseconds in an hour
long minute = 60000; // 60000 milliseconds in a minute
long second = 1000; // 1000 milliseconds in a second

void setup() {
  lcd.begin(16, 2);
 
  pinMode(pwm1,   OUTPUT);
  pinMode(pwm2,   OUTPUT);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Coloidal I=mA ");
  lcd.print(mA);
  long timeNow = millis();
  hours = (timeNow) / hour;             
  minutes = ((timeNow) % hour) / minute ;
  seconds = (((timeNow) % hour) % minute) / second;
  lcd.setCursor(0, 1);
  lcd.print("T:");
  lcd.print(hours);
  lcd.print(":");
  lcd.print(minutes);
  lcd.print(":");
  lcd.print(seconds);
 
  
  current = analogRead(pot) / 4;
  mA=map(current, 0,255,0,10);

  
  if(direct)
    analogWrite(pwm1, current);
  else
    analogWrite(pwm2, current);

  direct=!direct;
    
   if(minutes>=0 && minutes<30){
     digitalWrite(pwm1, 0);
    lcd.setCursor(10,1);
    lcd.print("P:+/-"); 
    
}
   if( minutes>=30 && minutes<59){
      digitalWrite(pwm2, 0);
    lcd.setCursor(10,1);
    lcd.print("P:-/+");       
  }

  
  if(hours>=3){
   digitalWrite(pwm1, 0);
   digitalWrite(pwm2, 0);
    lcd.setCursor(10,1);
    lcd.print("END");    
 
   } 
    delay(100);

 }

Credits

Mirko Pavleski
154 projects • 1304 followers

Comments