May I add that KiCad and EasyEDA are CAD/CAM packages, not merely CAD. Even Fritzing is more than simple CAD.
I personally find the restrictions, forced by such programs, though helpful for their primary application, sometimes limiting and annoying.
Nope!
Wrong again
What would you call the capability to produce the data for a PCB?
The abbreviations are: Computer Aided Design and Computer Aided Manufacturing.
I've never called it anything. Why do you need to call it something? It what PCB design software is supposed to do.
You only need the battery for backup, should last for several years
My parts list:
| Quantity | Part Number | Manufacturer Part Number | Description |
|---|---|---|---|
| 2 | 1655-1N5817CT-ND | 1N5817 | 20V, 1A, DO-41, DIODE SCHOTTKY |
| 1 | 1727-6193-1-ND | BC848W,115 | TRANS NPN 30V 0.1A SOT-323 |
| 1 | IRLML9301TRPBFCT-ND | IRLML9301TRPBF | MOSFET P-CH 30V 3.6A SOT23 |
| 3 | 13-CFR-25JR-52-100KCT-ND | CFR-25JR-52-100K | RES 100K OHM 5% 1/4W AXIAL |
| 2 | 13-CFR-25JR-52-4K7CT-ND | CFR-25JR-52-4K7 | RES 4.7K OHM 5% 1/4W AXIAL |
| 1 | 13-CFR-25JR-52-33KCT-ND | CFR-25JR-52-33K | RES 33K OHM 5% 1/4W AXIAL |
| 1 | 220QBK-ND | CFR-25JB-52-220R | RES 220 OHM 5% 1/4W AXIAL |
| 2 | 1189-2260-ND | 35YXJ100M6.3X11 | CAP ALUM 100UF 20% 35V RADIAL TH |
| 1 | 1189-1123-ND | 16PK4700MEFC12.5X25 | CAP ALUM 4700UF 20% 16V RADIAL |
| 2 | A131444CT-ND | ROX1SJ1R0 | RES 1 OHM 5% 1W AXIAL |
| 2 | F2006-ND | 60R050XU | PTC RESET FUSE 60V 500MA RADIAL |
| 2 | P6KE20ALFCT-ND | P6KE20A | TVS DIODE 17.1VWM 27.7VC DO15 |
Is this right?
You might want all through-the-hole or all SMD components. Choices I made (taken from a project of mine) were preliminary, feel free to find alternatives. Two capacitors should be 100nF, even 10nF would do. For the big capacitor you should ponder whether a SMD will stand the vibrations of a car environment, maybe it's better to use one TTH and fix it to the PCB with a strap. If you don't use the LED (missing) there are several other components you won't need. Or you might want to use several LEDs for instrument lighting. You should do some experiments with resistors to find the optimal brightness of the LED(s). Resistors 1/8W are sufficient, commonly used are metal film (1%), probably not even more expensive. If you order a PCB from a PCB manufacturer, you might want to adapt to what components they have on offer. SMD components can be placed on both sides of the PCB, one side is more common.
What are your thoughts on this? I very much value your opinion.
@stitech does not have a 9V regulator on the input. Do you disagree with this approach? My choice of the BA90BC0T was a bad choice, I believe someone said. What device do you recommend for this purpose?
Please elaborate:
- What problem do you expect to arise from the voltage divider from Ignition (100k and 100k results in switching thresholds 3V and 7V, and protects against destructive currents in the input).
- What problem do you expect to arise from the current source configuration of the BC848 (the drain-gate voltage of the MOSFET will not exceed 5V).
- What problem do you expect to arise from the capacitor at +5V (the regulator has overcurrent protection, I even added a check on the voltage in
setup(), just in case). - Anything else you expect from the crappy environment?
A few things all newbies should know when using an Arduino:
- Never connect a signal or voltage higher than 5V to any 5V Arduino I/O.
- Never connect a signal or voltage higher than 3.3V to any 3.3V Arduino I/O.
- Never power a motor, servo or solenoid directly from an Arduino.
Follow these 3 simple rules and you will never go wrong.
Before going any further, I suggest you spend some time learning at least the basics about electricity, otherwise you wonât understand what people here are trying to tell you.
Here is a good website:
https://www.allaboutcircuits.com/textbook/
I guess I know more about electricity than you (bachelors). I don't need to live by your BIBLE, I read datasheets.
True, but you will never use the full potential of your hardware.
Arduino has chosen to use a better regulator and a better microprocessor on the Nano Every to expand the usefulness of the board. Living by the bible, written for the original UNO, negates that choice.
No one has asked you to, feel free to do whatever you want. My advise is free, I'm not forcing you to use it.
Living by the bible, written for the original UNO, negates that choice.
No it does not. You are free to choose whatever Arduino you want.
While we're waiting for a RELEVANT answer from @jim-p, we might review the Bill Of Matrials.
It now contains mostly through-the-hole components and some surface mount devices.
You might decide on all TTH and solder everything yourself, or, at the other end of the spectrum, you might pick a PCB manufacturer that will place all SMDs on the PCB.
It's your project, so you need to decide whether you're comfortable with soldering, with soldering SMDs, how much room you've got in your dashboard, and so forth.
I definitely prefer through-hole devices. I just couldnât find equivalents that I could feel certain about. Any suggestions would be appreciated.
I think that the three courses in electrical engineering will suffice. It has just been over 57 years.
I have decided that the capacitor is not worth the risk and the hassle. It isnât going to provide much benefit, so I am leaving it out.
You propose to leave the capacitor on +5V out. Let's look at what happens to the goals that you've set:
- Keep GPS alive to avoid the time-to-first-fix.
- Store data in EEPROM
The Nano Every has a capacitor (22”F) at the output of the 5V regulator. The GPS uses 30mA (post #85), the board uses another 30mA (let's ignore the other modules for now). This capacitor will be drained from 5V to 3.78V in 0.4ms. Too short, writing the EEPROM takes 4ms. And no keeping GPS alive.
There is a capacitor (22”F) at the input of the 5V regulator. Calculation is more complicated, the regulator pulls increasing current with decreasing input voltage. Using a wet finger: 2.5ms. Still too short for writing the EEPROM. And still no keeping GPS alive.
Goals are not reached, we need to do something.
Adding a capacitor at VIN might buy us time to write the EEPROM but raises the question what to measure and how to decide to write or not (you don't want to write every time you crank the engine).
Adding a big capacitor at VIN can even keep the GPS alive for some time. I'll use the picture for cranking from post #96 as a worst case scenario, even if most days the voltage won't drop that low. Measuring battery voltage is already incorporated in the schematics. As long as the battery voltage is at least 6V the regulator of the Nano Every keeps working. If the voltage drops below that 6V, it might be cranking or electrical failure. The same wet finger says 1000”F will keep the system running, including the GPS, for more than 100ms. After 90ms it's clear that it's not cranking but electrical failure, so we need to write the EEPROM.
It is to be expected that the voltage drops further and when it returns PowerOnReset is performed. Theoretically it is possible that supply rises before the POR threshold is reached, in which case we need to reset flags ourselves.
Let's assume the car is set aside for winter. Measuring battery voltage is already incorporated in the schematics. If the voltage drops below 10.5V, it might be cranking or battery low. After 20s it's clear that it's not cranking but battery low, so we need to write the EEPROM and switch off this supply. Keeping the GPS alive is not possible in this case.
We've now replaced the capacitor at +5V with one at VIN.
Iâm not so happy about this MOSFET, but you wanted through-hole.
// see schematic NanoEveryInCar(6)
// system for speedometer and odometers
// for now, supply only
#define inputInstrumentLight 2 // input D2 of Nano Every, to read Ignition
#define outputInstrumentLight 3 // output D3 of Nano Every, for LED
#define inputBattery A1 // input A1 to measure voltage of car battery
#define outputBatteryHold 4 // output D4 of Nano Every, for transistor and MOSFET
bool flagBelow10V5 = 0; // to prevent repeating
uint32_t timeBelow10V5 = 0; // time stamp when voltage dropped below 10.5V
bool flagBelow6V = 0; // to prevent repeating
uint32_t timeBelow6V = 0; // time stamp when voltage dropped below 6.5V
bool flagEepromWritten = 0; // to prevent repeating
#define periodBelow6V 90 // write EEPROM after 90ms below 6V
#define periodBelow10V5 20000 // write EEPROM and supply off after 20s below 10V
#define adc6V 305 // ADC reading when VIN = 6V
#define adc6V5 330 // ADC reading when VIN = 6.5V
#define adc10V5 533 // ADC reading when VIN = 10.5V
#define adc11V 559 // ADC reading when VIN = 11V
void setup() {
// Arduino IDE will setup ADC automatically
readEeprom(); // retrieve the saved data
pinMode(outputInstrumentLight, OUTPUT); // make this pin output
pinMode(outputBatteryHold, OUTPUT); // make this pin output
// put remaining setup code here, to run once:
}
void loop() {
digitalWrite(outputInstrumentLight, digitalRead(inputInstrumentLight)); // read inputInstrumentLight and make output the same
uint16_t r = analogRead(A1); // measure voltage at VIN through divider 100k and 33k
uint32_t now = millis(); // read time stamp
if (r < adc6V) { // battery < 6.5V?
if (!flagBelow6V) { // first time below 6V?
timeBelow6V = now; // store time stamp
flagBelow6V = 1; // prevent repeating
} else if ((now - timeBelow6V) > periodBelow6V) { // too long below 6V?
writeEeprom(); // call function to write EEPROM
flagEepromWritten = 1; // set flag
}
}
if (r > adc6V5) { // VIN > 7V?
flagBelow6V = 0; // reset flag
flagEepromWritten = 0; // reset flag
}
if (r < adc10V5) { // battery < 10.5V?
if (!flagBelow10V5) { // first time below 10V?
timeBelow10V5 = now; // store timestamp
flagBelow10V5 = 1; // set flag
} else if ((now - timeBelow10V5) > periodBelow10V5) { // too long below 10V?
writeEeprom(); // call function to write EEPROM
digitalWrite(outputBatteryHold, LOW); // battery hold off
}
}
if (r > adc11V) { // battery > 11V?
digitalWrite(outputBatteryHold, HIGH); // battery hold on
flagBelow10V5 = 0; // reset flag
}
// put remaining main code here, to run repeatedly:
}
void readEeprom() {
// to be determined
}
void writeEeprom() {
// to be determined
}
Good idea.
Many people will indiscriminately throw in large capacitors thinking that it will solve all their noise/voltage problems when in fact they can actually do more harm than good.
Iâm not going to design this for you but I will try to help you learn enough so that you can make a good attempt at it.
I see you have yet another completely different design for consideration.

