Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
user:zimmer62:autodvdloaderrobot:start [2013/09/21 16:46]
zimmer62
user:zimmer62:autodvdloaderrobot:start [2013/10/01 02:32]
zimmer62
Line 18: Line 18:
   * Bad Disk Full (Orange, Yellow, Green, Blue) [[https://​www.sparkfun.com/​datasheets/​Sensors/​QRB1114.pdf|QRB1114]]   * Bad Disk Full (Orange, Yellow, Green, Blue) [[https://​www.sparkfun.com/​datasheets/​Sensors/​QRB1114.pdf|QRB1114]]
   * Bin Full (Red, Orange, Yellow, Green) [[https://​www.sparkfun.com/​datasheets/​Sensors/​QRB1114.pdf|QRB1114]]   * Bin Full (Red, Orange, Yellow, Green) [[https://​www.sparkfun.com/​datasheets/​Sensors/​QRB1114.pdf|QRB1114]]
 +    * Pin 1 = Red = Emitter Anode
 +    * Pin 2 = Orange = Emitter Cathode
 +    * Pin 3 = Yellow = Sensor Emitter
 +    * Pin 4 = Green = Sensor Collector
   * Drive Door (Blue, Black, Purple, Yellow) [[https://​www.sparkfun.com/​datasheets/​Sensors/​QRB1114.pdf|QRB1114]]   * Drive Door (Blue, Black, Purple, Yellow) [[https://​www.sparkfun.com/​datasheets/​Sensors/​QRB1114.pdf|QRB1114]]
   * Home Sensor (Red, Orange, Yellow) [[http://​www.sharpsma.com/​webfm_send/​637|Sharp GP1A75E3J00F]] (Yellow = E)   * Home Sensor (Red, Orange, Yellow) [[http://​www.sharpsma.com/​webfm_send/​637|Sharp GP1A75E3J00F]] (Yellow = E)
Line 23: Line 27:
   * Safety Int (Black, Read, Green) [[http://​www.sharpsma.com/​webfm_send/​637|Sharp GP1A75E3J00F]] (Green = E)   * Safety Int (Black, Read, Green) [[http://​www.sharpsma.com/​webfm_send/​637|Sharp GP1A75E3J00F]] (Green = E)
   * JP13 Greyish White Wires go to the Disc Release Solenoid.   * JP13 Greyish White Wires go to the Disc Release Solenoid.
-  * Stepper Motor FL42STH47-1206AC +  * Stepper Motor [[http://​jnker.com/​equipment/​step_pdf/​Seriya-GD42STH_1.8.pdf|FL42STH47-1206AC]] (1.8 degrees 1.2A)  
-     ​* ​1.8 degrees 1.2A+     * Rated Voltage = 4V 
 +     * Current / Phase = 1.2A 
 +     * Resistance / Phase 3.3Ω 
 +     * Inductance / Phase 2.8mH 
 +     * Holding Torque = 3.17Kg-cm 
 +     * Rotor Inertia = 68g-cm^2 
 +     * Detent Torque = 200g-cm
   * Power Supply 12V @ 2.5A   * Power Supply 12V @ 2.5A
 +
 +{{:​user:​zimmer62:​autodvdloaderrobot:​motor-windings.jpg?​direct&​200|}}
  
 This should be enough information to get going. This should be enough information to get going.
Line 45: Line 57:
 [[http://​www.sharpsma.com/​webfm_send/​637|Sharp GP1A75E3J00F]] I'm still not sure from this how to identify the other two leads. [[http://​www.sharpsma.com/​webfm_send/​637|Sharp GP1A75E3J00F]] I'm still not sure from this how to identify the other two leads.
  
 +
 +I had a heck of a time getting the .net gadgeteer board and the L6470 stepper controller to talk to any stepper motor.
 +
 +I was finally able to get this turning a stepper motor over the weekend. ​ It seems it's very sensitive to it's register settings.
 +
 +I had to use some software and a stepper motor datasheet to get some values to feed into their software.
 +
 +According to this:
 +https://​www.ghielectronics.com/​community/​forum/​topic?​id=8081&​page=2
 +
 +Those values only get you close and you need to use an o-scope to tune it further.
 +
 +
 +TODO:
 +  * Hookup and test stepper motor to L6470 module
 +  * Interface both types of optical sensors to gadgeteer board
 +  * Write some rough code to exercise the machine using the optical sensors to prevent damage
 +    * A loop that grabs CD's from source stack, drops them every other into the bins until bins are full.
 +  * Write code to interface machine to PC to take simple commands and report back
 +  * Write code on PC side to control machine and rip discs
  
  
 +9/30/2013
  
 +Andrew and I learned how to interface with the Disc Presence sensor. ​ It was very easy
  
 +  * Blue Wire to Ground
 +  * Red Wire to 5V
 +  * Black Wire to Pin 3 (interrupt pin)
  
 +<code csharp>
 +        public bool IsDiscPresent { get { return !diskPresenceSensor.Read();​ } }
 +            ​
 +        private Gadgeteer.Interfaces.InterruptInput diskPresenceSensor;​
 +        private void SetupDiscPresenceSensor()
 +        {
 +            char_Display.PrintString("​DiscSensorSetup"​);​
 +            diskPresenceSensor = breadBoard_X1.SetupInterruptInput(GT.Socket.Pin.Three,​ GT.Interfaces.GlitchFilterMode.On,​ GT.Interfaces.ResistorMode.PullUp,​ GT.Interfaces.InterruptMode.RisingAndFallingEdge);​
 +            diskPresenceSensor.Interrupt += diskPresenceSensor_Interrupt;​
 +            diskPresenceSensor.Read();​
 +        }
  
 +        void diskPresenceSensor_Interrupt(GT.Interfaces.InterruptInput sender, bool value)
 +        {
 +            char_Display.Clear();​
 +            char_Display.PrintString(IsDiscPresent.ToString());​
 +        }
 +</​code>​