Close



Results 1 to 10 of 72

Threaded View

  1. #11
    Peachy Printer Founder
    Join Date
    Sep 2013
    Posts
    308
    Hey everyone, Im a bit pressed for time today.. so sorry in advance for the short reply's.

    here we go
    @Mike_biddell
    Great Ideas .. quite possibly part of what could make it low cost enough to be a part of the peachy basic, be sure to post your hack if you build it! You will likely pave the way for many others!
    The drip governor is my aim at doing it super low cost, pumps will most likely be the answer for the pro.

    @pete
    Nice work! take a look at the valve i made below .. i think it would act as a nice Super low pressure one way valve simply using gravity instead of a spring.
    I like the idea that the pump could be help the surface tension issue... we plan to do this in the pro! Thanks for the link to the pump they look great so im purchasing a few now

    @Slatye
    Those pumps look great also .. again possibly exactly what we need for the pro, we could simply put a photo interrupt on the back end of the motor and use and interrupt pin on a micro to count how many cam pulses the pump has done.

    @Feign
    Right not only is the circuit easy to listen in on its also easy to control, we are breaking out important wires like that into terminal headers and solder pads.
    We are doing this specifically to encourage hacks, the peachy printer isnt just open its actually designed to be hacked. and on that note .. I did get a few hours to work on my version of the drip governor hack... so here are some pics!

    20140308_200509.jpg
    20140308_200550.jpg
    20140310_134749.jpg


    also here is a python script:

    Code:
    import serial
    
    import time
    connected = False
    ser = serial.Serial("COM4", 9600)
    
    
    
    while not connected:
        serin = ser.read()
        connected = True
    
    
    for i in range(0,300):
        print (ser.outWaiting())
        print (ser.inWaiting())
        try:
            ser.write("1")
        except ser.SerialTimeoutException:
            print('gerr')
    
        print('wrote1',i)
        time.sleep(1.5)
        try:
            ser.write("0")
        except ser.SerialTimeoutException:
            print('gerr2')
    
        time.sleep(1.5)
        #ser.flushInput()
    
    
    
    
    
    
    
    
    #while ser.read() == '1':
    
    #    ser.read()
    
    
    
    ser.close()
    and an arduino script that the python script talks to over serial
    Code:
    // Open a serial connection and flash LED when input is received
    int led = 13;
    int on = 2;
    int off = 3;
    int onTime = 400;
    int pulseValve = 10;
    char code = '0';
    int powerTime = 500;
    
    
    void setup(){
      // Open serial connection.
      Serial.begin(9600);
      pinMode(13, OUTPUT);
      Serial.write('1'); 
      pinMode(led, OUTPUT);    
      pinMode(on, OUTPUT);
      pinMode(off, OUTPUT);
      pinMode(pulseValve, INPUT);
      
    }
    
    
    void testValve(){
      digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
      digitalWrite(on, LOW);
      digitalWrite(off, HIGH);
      delay(powerTime);
      digitalWrite(off, LOW);
      
    
    
      delay(2000);
      
      digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
      digitalWrite(off, LOW);
      digitalWrite(on, HIGH);
      delay(powerTime);
      digitalWrite(on, LOW);
    
    
      delay(2000);
      }
      
    
    
    
    
    
    
    
    
    void loop(){ 
      //Serial.write(2);
      
      if (digitalRead(pulseValve) == HIGH){
      testValve();
      }
      
      
      if(Serial.available() > 0){      // if data present, blink
      code = Serial.read();
      
      if (code == '1'){
      digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
      digitalWrite(off, LOW);
      digitalWrite(on, HIGH);
      delay(powerTime);
      digitalWrite(on, LOW);
      //Serial.write(1);
      }
      
      if (code == '0'){
      digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
      digitalWrite(on, LOW);
      digitalWrite(off, HIGH);
      delay(powerTime);
      digitalWrite(off, LOW);
      //Serial.write(0);
      //delay(onTime);               // wait for a second
      }
      }
    }

    ok that code is rather ruff, its just an excerpt from my playground branch.. Townly is making it into a proper class right now.
    Soon you will just be able to script the printer like this
    dripGovernor.stopDripping()
    dripGovernor.startDripping()


    Ill be making some major improvements to this ..
    - change to a single coil driven by an h bridge reversing the power to the coil turn the valve on and off.( use a stopper to keep the magnet alwase off center of the coil so the coil alwase pushes it in one direction.
    - make the hole thing smaller
    - machine the moving pin with a lathe then use the machined pice to and make a mould to cast the magnet into the pin
    - reduce the hose length between the driper and the governor valve to increase the responsiveness of the system.
    - use clear plastic for all outer components ( easier to see what happens when it stops working)
    - change from 34 gage wire to 36 or 38 gage wire, ( reducing the current required to do the same work with everyting on a smaller scale )
    - adjust the size density of the moving part so its the same density as saturated salt water

    looking forward to seeing all the different ways there are to govern dripping!
    Im sure some of the best ways to do it will be a combination of all the posts here.
    Last edited by rylangrayston; 03-10-2014 at 11:46 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •