I am currently having an issue with DO's on an Arduino in a constant state of high with a pull down resistor attached to a ground plane. Voltage being measured on the DO is 3v. Pull down resistor is 2.2kohm. Below is the wiring diagram of the entire circuit. Looking for suggestions on where I went wrong with this or possible solutions. Currently was thinking of either using a larger resistor array or putting a diode between the resistors and ground plane.

This is my first big project with the Arduino so any feedback is appreciated.

enter image description here

  • \$\begingroup\$ Are your pins configured as inputs with no pull-ups? \$\endgroup\$ – C_Elegans Feb 8 '18 at 18:13
  • \$\begingroup\$ So I understand that you measuring the voltage between pins D2...D7 and a ground, and this voltage is 3V. Also I understand that the dip switch SW1 is closed (i.e. connects D2-D7 to 5V)? \$\endgroup\$ – zupazt3 Feb 8 '18 at 18:14
  • \$\begingroup\$ yup, using a fluke when measuring from D2-D7 to a ground pin i am seeing 3 volts with the switches in the open state. when the switches are closed 5 volts are measured. when switches are opened again 3v are measured. \$\endgroup\$ – Chris E Feb 8 '18 at 18:22
  • \$\begingroup\$ That's seems really strange. 1) Are pins for sure configured as inputs (not outputs)? 2) If so, then are those inputs with no pull ups? 3) Is the Atmega for sure powered from 5V? I see some 3.3 on the schematic as well. And some Arduino boards work with 3.3V. \$\endgroup\$ – zupazt3 Feb 8 '18 at 18:41
  • \$\begingroup\$ So after a good meal and a break from beating my head against the desk found the issue. turn out that the through holes on the pcb for the arduino are not connected to the ground plane on the pcb. all GND connects that are not on the arduino were connected to the ground plane. Thanks for the suggestions and if anyone has any input on the circuit above your more then welcome to express them as I will need to look over everything and send the drawings back out for the boards to be manufactured again \$\endgroup\$ – Chris E Feb 8 '18 at 20:10
pinMode(pin, INPUT);           // set pin as input (no pull-up resistor)   
pinMode(pin, INPUT_PULLUP);    // set pin as input (20k-50k internal pull-up resistor)   

pinMode(pin, OUTPUT);          // set pin as output
digitalWrite(pin, HIGH);       // drive pin to Vcc
digitalWrite(pin, LOW);        // drive pin to GND

Be ESD Aware....

  • \$\begingroup\$ I don't recall Atmega (used in Arduino) to have pull-down capabilities. Atmega has only pull up. Besides, both pull-up or pull-down wouldn't do 3V out of 5V with 2.2K external pull down. \$\endgroup\$ – zupazt3 Feb 8 '18 at 18:18
  • \$\begingroup\$ arduino.cc/en/Tutorial/DigitalPins I wonder if all input pins are the same. \$\endgroup\$ – Tony Stewart Sunnyskyguy EE75 Feb 8 '18 at 18:20
  • \$\begingroup\$ So according to your link, you should edit your answer and remove this "internal pulldown" - there is no such thing. digitalWrite(pin, LOW); will not turn on pull down - it will just disable pull-up resistors, making an input go into high impedance state. \$\endgroup\$ – zupazt3 Feb 8 '18 at 18:33
  • 1
    \$\begingroup\$ @TonyStewart.EEsince'75, i took the liberty to change your answer, i hope you do not mind \$\endgroup\$ – jsotola Feb 8 '18 at 19:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.