Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AutomationShield Hardware Style Guide #19

Open
gergelytakacs opened this issue Apr 9, 2018 · 4 comments
Open

AutomationShield Hardware Style Guide #19

gergelytakacs opened this issue Apr 9, 2018 · 4 comments
Assignees
Labels
AutomationShield common Common functionality for the entire library hardware Hardware related topic

Comments

@gergelytakacs
Copy link
Owner

gergelytakacs commented Apr 9, 2018

This sticky issue and the post summarizes some hardware design practices for the AutomationShield devices. The current list is quite randomly organized, make sure you read it all. Please comment any other ideas that are generically valid.

Creed
The creed of an AutomationShield hardware device are, that it shall be

  • open source
  • low-cost (so universities with low budget and even students can afford it)
  • standardized (use components that ere easy to obtain anywhere in the world, off the shelf)
  • simple
  • well documented,
  • compatible with the Arduino R3 electrical layout; furthermore it
  • shall fit on a single Arduino shield,
  • use off the shelf components or 3D printing
  • need no ambiguous or improvised parts
  • be relatively easy to replicate and assemble by the average person

Generic notes

  • If there no servo motor on your shield, do not use pins 9 and 10 for PWM. The internal sampling library blocks these. Also, do not use pins 3 and 11 as these are connected to Timer2, which may be used for other purposes, such as counting signals etc. The preferred pin to use is 5 or 6, be aware that this produces 980 Hz PWM signal.
  • If there is a servo motor on your shield, do not use pins 9, 10, 11 and 3 for PWM. Instead of this, use pins 5,6. The servo library messes with 11 and 3, while the internal sampling library blocks 9 and 10.
  • Do not put through-hole components over the USB connector of the Arduino. This can short the part. SMD are fine.
  • If a reference potentiometer is needed, use the small ACP CA9MV-10K
  • Use long, so called stackable headers only.
  • The PCB mask is green.
  • The 4x3.2mm holes on the board copying the mounting holes on the Arduino should stay if there is space for them, but can be removed if space is needed.
  • The preferred place of the AutomationShield logo on the silkscreen is top left, over the USB connector. Alternate position is bottom left.
  • Header specification: 15 mm long legs female headers, 2 x - 8-pin; 1 x - 6-pin; 1 x - 10-pin
  • If external power is needed, do not add another connector to the shield, use the barrel connector on the Uno (Mega etc.) and transfer the voltage via the Vin pin. Warning: the Vin pin is not corrected for reverse voltage. That being said, the barrel jack diode is rated for 1 A, and has a forward voltage of 0.7 V (less then the input voltage).
  • Think about what's underneath the shield. Metallic screws may touch live electronics and create shorts. Thick plastic screws can prevent the shield from being fully inserted.
  • Wood is a nice material, but not on our shields. No wood please.
  • Assume that the user will employ the Programming Port when using the device. No applications for the Native Port.
  • For I2C components, use the separate SDA and SCL connectors, do not use the A4/A5 pair. This is only valid for the Uno.
  • The mechanical part of the design shall be relatively easy to assemble or disassemble, so try not to make any permanent joints except for the electronics. This means, that you should avoid using glue at all cost.
  • If you must use glue in your design, do not use superglue. The vapors of cyanoacrylate leave a nasty stain on plastic. Your 3D printed parts, the PCB or other components will be badly stained.
  • Think of how you will and should assemble several identical devices. Sometimes motors or servos need to be in a certain position so that the assumptions and the model are valid. Remember, you are not creating a one-off device, they should be as identical as possible.
  • There is a good selection of mechanical parts, like tubes, profiles, balls at www.premodely.sk

3.3V Compatibility

Make the shield 3.3 V compatible at all cost: New shields and updates to old shields (especially those with fast dynamics) should be made 3.3 V compatible. Here are some concepts to consider:

  • The analog sensors should put no more than 3.3 V to the respective analog pins.
  • Connecting 3.3V to the AREF pin doesn't change anything, device still takes internal reference though. This has been tested on the Zero / Due / Uno without issues.
  • Consider how analog measurement affects shield compatibility. The 3.3 V shields do not tolerate >3.3 V on the pins!
  • Consider how PWM output affects the shield compatibility. While an 5 V signal may open your MOSFET, the 3.3 V does not have to necessarily do the same...
  • The 5 V powered servos should still accept 3.3 V signals to control the motor. This has been tested on a Zero. Simply said, there is no need to adjust for logic level differences in 3.3 V boards if a usual RC servo is used.
@gergelytakacs gergelytakacs added enhancement New feature or request hardware Hardware related topic labels Apr 9, 2018
@gergelytakacs gergelytakacs changed the title Use smaller pots in new design Use smaller pots in new designs Apr 10, 2018
@gergelytakacs
Copy link
Owner Author

@gergelytakacs gergelytakacs changed the title Use smaller pots in new designs AutomationShield Hardware Style Guide Oct 23, 2018
@gergelytakacs
Copy link
Owner Author

Change the positioning and size for the pin labels on the shields. The headers tend to obscure them for reading.

@gergelytakacs
Copy link
Owner Author

Take care of shorting to ground by placing components over the USB connector of the Arduino. FloatShield made this mistake, do not repeat it.

@gergelytakacs
Copy link
Owner Author

The user reference potentiometer is prohibitively large. New designs or revisions should use a smaller potentiometer.

The images below show the one included in the ArduinoStarter Kit (?):
image

Compared to the one on the OptoShiled:
image

The small one has the marking "ACP Spain", the body measures 10mm x 10mm The pins on the runner side are about 6 mm apart. First of all, find a suitable replacement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AutomationShield common Common functionality for the entire library hardware Hardware related topic
Projects
None yet
Development

No branches or pull requests

2 participants