element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum My rPI Shield: 16 PWM + 16 GPIO + 4 16 bit ADC + Extras!
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 18 replies
  • Subscribers 676 subscribers
  • Views 3394 views
  • Users 0 members are here
  • raspberry
  • pi
  • gpio
  • pwm
  • custom
  • raspberry_pi
  • ir
  • shield
  • nrf24l01
  • adc
Related

My rPI Shield: 16 PWM + 16 GPIO + 4 16 bit ADC + Extras!

vitormhenrique
vitormhenrique over 11 years ago

Hello everyone,

 

So, recently I started working on a robot project, I own one of those rover 5 robot platform, and wanted to control it with my rPI. The problem is that the controller board utilizes +5V PWM signals, I would need ADC inputs to read the current drawn from the motors, and some +5V enable GPIO for other stuff.

 

I could use one level shifter to do the job, and many other IC chips for each other feature, but I ended up creating one shield for my rPI that had it all, I named it the "tauShield".

 

All the features are:

  • 16 PWM, 12-bit PWM (frequency from 40 Hz to 1000 Hz)
  • 4 16-Bit Analog-to-Digital IO's
  • 16 GPIO'S through an expander IC
  • 8 native rPI GPIO with +5V logic input / output
  • IR emitter / receiver
  • nRF24L01 adaptor (ultra low power 2Mbps RF transceiver for the 2.4GHz , excellent to talk to Arduinos, remote control the robot, etc...)

 

Ordered the PCB from oshpark:

image

 

After 1 hour of hand soldering, the result:

 

image

The shield also has a power jack that power the Raspberry PI with a overcurrent protection. The IC's share a I2C bus, the address of each IC can be changed soldering the jumper pads.

 

This is my first real "board" and I already noticed some stuff that can be improved, but it is working like a charm.

 

I still have extra 2 boards of this revision, and 2 from the first revision (does not have the GPIO expander and utilizes sparkfun's nRF24L01 adaptor), if anybody is interested let me know, I would need to hand solder it and ship to you.

 

So what do you guys think of my shield? suggestions? improvements? what is missing?

 

Couple more pictures:

 

image

image

 

Best regards,

 

Vitor Henrique

  • Sign in to reply
  • Cancel
  • Problemchild
    Problemchild over 11 years ago

    Nice board there Victor!

    What are you using for the ADC and what does the PWM is that dedicated or an alternate use for the GPIO?

    Have you considered some DAC channels as well?

    If  you moved the NRF socket and the power decoupling a bit  you could offer the connector for the  extra I/O. i know it's not soldered but gives you an option.

     

    Thanks for showing us you board

    John

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Problemchild
    Problemchild over 11 years ago in reply to Problemchild

    PCA9686 for the PWM.. I see it now ..Good one!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • michaelkellett
    michaelkellett over 11 years ago in reply to Problemchild

    Very nice - recently, when I wanted a lot of PWMs (30) I used a Lattice ICE40 series ultra low power FPGA  - more work than 2 PCA9685s (not 9686 !) but similar price and much more flexible.

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Problemchild
    Problemchild over 11 years ago in reply to michaelkellett

    I was wondering about the Chip ID but  Google found it as that so someone else must of made the same mistake image

     

    With the FPGA you could of got rid of the GPIO chip as well saving some real estate!

    The only thing I could say is t hat you would obviously need experience of these chips then, I assume they are FLASH based to save chips etc???

    Also were those the ones with the cool polar bear logo?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • michaelkellett
    michaelkellett over 11 years ago in reply to Problemchild

    The ICE40's are one time prom programmable but any number of times RAM programmable so I keep the code in a serial flash and SPI it into the FPGA on boot up. The processor is a an STM32F100   - if anyone needs the FPGA boot code I'll share.

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Robert Peter Oakes
    Robert Peter Oakes over 11 years ago

    Having the IR receiver and Transmitter  on a daughter board and use a socket instead on the board allowing for the IR to be case mounted. After all this kind of board will end up in a case as  a final resting place for a home automation sensor etc

     

    Adding a small SOT temp sensor or something to complete the capability (Available in I2C as well)

     

    for the outputs, if you use an open collector drive arrangement then the user can choose whatever they want , maybe a solder pad bridge to connect a pull up if needed

     

    inputs could easily be protected by using a small val resistor and a protection diode 3v3 or 5v depending on the input, that way even exceeding the volts a bit would not break anything

     

    have a look at this for an idea of what i mean, I know it is for a TiviaC board but the integration techniques are the same

    http://www.ti.com/tool/boostxl-iobkout,there is a link to a schematic, look at the ESD protection in particular

     

    Oh and Very nice board btw,

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Problemchild
    Problemchild over 11 years ago in reply to Robert Peter Oakes

    Nice one about the IR  note that the Pi face has a 3 pin connector for the receiver , just do one each for rx & tx.

     

    The temp sensor is a good idea as well

     

    I'm assuming the extra Power connector is to drive the servo style outputs if so then great other wise you may need to get separate power to those!

     

    For the robot can we have some nice MEMS sensors on the I2c and maybe even an RTC ...(pushing the boat out !! image)

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • vitormhenrique
    vitormhenrique over 11 years ago

    Thanks everyone for the feedback!

     

    I'm a Chemical Engineer, never studied electronic on school and I'm learning everything reading datasheets and books. I'm the worst on routing vias and placing the components on the PCB, routing this board was a nightmare, even with so much space! image

     

    @John Alexander I did not include a DAC because I could not find a use case yet on my robot, and left the extra IO's of the rPI (v2) out because I felt that I had enough IO's, but I'll add it on revision 3! The power connector it is intent to drive some (micro) servos, but it also can power the rPI. The big CAP there is to avoid power fluctuations shutting down the rPI, I tested with 5 micro servos, with no load, and it was ok. There is one PTC under the shield that I can desolder and completely separate the power supply, but i'll add a switch next revision as well.

     

    @Michael Kellett Cool!  I did not thought about FPGA because I never used it before (it is on my to do list to learn), the I2C IC's it is not the fastest / flexible way, but it works fine to accomplish a lot of stuff , and there is plenty documentation on line, example python codes, etc.

     

    @Peter Oakes initially this board was thought to be on my robot, not inside any case, that is why the IR is soldered on the "main board". I was thinking on adding gyroscope + accelerometer compass + barometric/temperature sensors, but that would make the board to expensive image. The 8 rPI IO's that i broke down leveled shifted to +5V are actually using use an open collector arrangement with a pull up resistor.

     

    One thing that i completely forgot is to give the user access to the level shifted I2C.

     

    Thank you guys,

     

    Vitor Henrique

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Problemchild
    Problemchild over 11 years ago in reply to vitormhenrique

    That's a real good effort there Victor I'm impressed at your work. You could bring out the I2C  to a connector and  you could have the MEMS sensors on  there as the EBAY ones are dirt cheap!!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Robert Peter Oakes
    Robert Peter Oakes over 11 years ago in reply to vitormhenrique

    If the board is designed for the extras like gyro, temp etc, you can always leave then unpopulated for cost saving and only add if requested or the end user could do that if desired and having the skills of course

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube