Keyboard Builders' Digest / Tips & Tricks
Forward voltage calculations
Some hard numbers and experiments for those who'd like to try their hands on matrices utilizing the voltage drop across diodes to eliminate ghosting.
Published January 1, 2000
This is a dump of my measurements and experiments. I wanted to figure out the required forward voltage of the diodes, the threshold voltages for LOW and HIGH, etc. Will tidy it up later but reference it from some posts so here it is.
The following measurements were taken at 23°C room temperature (this may be important with these matrices):
KB2040 experiment 2022-05-06, 23°C(!)
- G->RAW (closed (skip voltage regulator)) 5.127V
- G->RAW (open) 4.871V
- G->3V 3.277V
- G->D2 (pulled up) 3.270
Method
- DP832 laboratory power supply
- Common ground + PS out connected directly to D2 of an RP2040 on a Adafruit KB2040.
- Plotting LOW/HIGH in Mu with 0.01 delay in code.
- Starting from 3.270, the voltage was decreased/increased by 0.001V until the signal stabilized.
- I waited 60 sec until the value (H/L) read on the pin was totally constant: plotted by 0.01 sec this means 6,000 consecutive measurements without a single outlier.
Results
- Vhigh min: 1.388V
- Vlow max: 1.283V
So no man's land range is: 1.39-1.28V
Btw, according to the RP2040 datasheet (3.3V):
- V_IL(max)=0.8V
- V_IH(min)=2V
- V_HYS=0.2V
Empirical part
Trying 1/2/3/4 diodes with a switch.
1N4148 V_F=0.61-0.62 according to the diode function of my multimeter. When in a circuit, it was rather 0.7V.
1->2.66 2->2.05 3->1.44 Damn… 1.3 kellene…
1N4001? 0.7V
1->2.570 2->1.870 3->1.170 Yay!!!
PULLUP+GND
1N4007: is this also 0.60-62V?! 1->y 2->y 3->triggers very rarely, almost never (0-2/10)
1N4148: 0.60-61V… 1->y 2->y 3->triggers very rarely, almost never (0-2/10)
PULLDOWN+"3V"
(Conclusion, this direction doesn't work well. Use pullup instead.)
Fordítva: pulldown és feszkót neki! Ez így menne egyáltalán?
1N4148 (0.60-61V?)
1->y 2->y 3->y 4->triggers rarely (2/10)
1N4007 (0.62V?)
1->y 2->y 3->y 4->triggers a lot! (?)It turns out you can't simply add up the individual forward voltages. Connecting the diodes results in slightly less cumulative drop than you'd expect for some reason (it may be an error in my measurement):
1N4148 0.614+0.623=1.215 0.614+0.623+0.608=1.773 0.614+0.623+0.608+0.615=2.287-2.426
1N4007 0.612+0.622=1.223 0.612+0.622+0.608=1.750 0.612+0.622+0.608+0.615=2.293
Pro Micro 5V Atmega32u4
- raw: 4.727 (through voltage regulator, J1 NOT closed)
- vcc: 4.678
- high pin: 4.625
Results
- High: >=1.449
- Low: <=1.405
1N4148 V_F=0.61-0.62
0: 4.625 1: 4.015 2: 3.405 3: 2.795 4: 2.185 5: 1.575 6:
4.625-1.405=3.220 /3=1.071V
Ikeji's Vf measurement method
It seems the forward voltage is dependent on the actual current so you can't really measure it with the multimeter's diode mode.
Instead, you should measure the voltage drop in a similar circuit you want the diodes use in:
KB2040/RP2040, 3.3V
- G->D2 (pulled up) 3.270V
- Vhigh min: 1.388V
- Vlow max: 1.283V
- No man's land range: 1.39-1.28V
Monitoring triggers and measuring Vf with multimeter:
1N4148
- 1x->y (0.4674V)
- 2x->y
- 3x->triggers rarely, almost never (0-2/10) (1.406V)
- 4x->n (1.861V)
1N4007
- 1x->y (0.4836V)
- 2x->y
- 3x->triggers rarely, almost never (0-2/10) (1.436V)
- 4x->n (1.909V)
To be continued…
Published on Sat 1st Jan 2000. Featured in KBD #0.