Jump to content

Recommended Posts

My (crazy) project is getting closer to completion so time to start a project topic. I have verified my Tiva C based controller design and are now waiting for PCBs - will arrive from China in a few days.


My background is from Radio/TV servicing and medical electronics, but for the last 25 years I have mainly been working on a large database application written in OpenEdge. Two years ago my preamp that I made some 30 years ago started to fail due to the rubber based switches rotting (a bit like my brain these days...). Since I did not want to buy one I decided to make a new - again with no mechanical parts in the audio path. A lot has happened since back when I was involved in electronics, and I have spent some time doing research for what components are now available - to many one may argue.


I decided to use a CPLD programmed in VHDL for the switching logic, high quality analog switches (my original design employed 40 series CMOS for these) and a VCA (voltage controlled amplifier) for volume control. I did not want to introduce a MCU because I believed I would get into trouble with the clock signal interfering with the audio... Anyway, my new design was successful and has now been in service for nearly two years.


After doing this I took an interest in learning about microprocessors again, I started out with Atmel/Ardouino and Energia but I found that combination a bit lacking - no easy way to do debugging was a showstopper for me. I found the TI processors more appealing, CCS allows me to get my hands dirty on "bare metal" and a decent debugger makes life easier.


So, here I am making another iteration of my preamp - this time involving no less than four TI processors. I have decided to post my project under the Tiva C header since it is the main workhorse, but the three other MCUs are 430s.


Ok, enough rambling - here are the main components I have designed:


Raspberry PI power switch - PC-style startup/shutdown, may be controlled over I2C or from a front panel switch.


IR Remote Control - RC5 protocol.


Main controller - Tiva C based, custom UI library and support for Keystone DAB radio.


Preamp board, 5 line inputs with the option of switcing one to phono (magnetic cartridge - vinyl is getting popular again), DAB option, I2C control and still a VCA based volume control.


I have recently switched to KiCad as my EDA, I did use Zenith PCB earlier but I am a bit scared to continue using that as it is licensed on a yearly basis (even if it is free) - who knows when it wil not be supported anymore. KiCad is open software and does not suffer from any limitations to number of pins or board size.


Attached are the design files I have made for the Preamp board - the design is still to be verified, I will do that when I see how the controller board works out when arriving from the fabricator.



3D view from my KiCad design - I am too lazy to make my own 3D files so it is somewhat incomplete. There is a TI processor hidden on the bottom side, as is the KeyStone radio module.


If everything goes to plan I will post about the bits and pieces that makes up the complete project. I even have mechanical design files (Vectric format) that may be used to make files in order fabricate the enclosures on a CNC-machine.


Ok, enough for this time.





Link to post
Share on other sites
  • 3 weeks later...

PCBs for the controller has now arrived from China, no routing errors! However I have some problems with the KeyStone DAB-module, I cannot get it to respond like the development board which works flawlessy - not good. The DAB module is on the preamp board, I have to delay sending it off for fabrication this until this is resolved.


The controller is performing well, her are a few pics - code will follow later when I am happy with it:



Frame is milled from 10mm solid aluminium.




Assembled controller board, touch sensors are home-made - a bit of black art to get them working reliably when embedded in the aluminium block.




Not too bad for beeing a prototype, I have to allow for some adjustment of the "wheel" - or find a way to perfectly align the alu block after turning it around to mill the front.

Link to post
Share on other sites

Neat project!  Do you have any more pictures of how you did the dial?


Sorry, I do not have any. I am using Vectric VCarve and Cut2D for design and GCode generation. For the rounded 3D profiles on the touch buttons and the dial I used AutoDesk 123D in combination with Vectric VCarve. My mill is homemade and it is the main tool allowing me to do this kind of work - also great for drilling PCBs. I can make the files available - but I am unsure how many of you that have access to a mill and the software I use, so maybe they are of limited value?


I am going to build a few more for some friends when time permits, I can document how I make the parts then.

Link to post
Share on other sites

Radio module is now up and running, I had used a 10K resistor instead of 1K for pulling up the battery detect pin. Great help from JP at MonkeyBoard Support!


I have been thinking about how to publish the source code for best giving back to the community - there are several components I believe can be of use in other projects so perhaps it is wise to split it in parts. It is already split in several libraries: a modified LCD driver based on RobGs code, DAB module communications layer, UI library... The main code is also split in several files, separating it into logical blocks of code. I am using Subversion on my own server for source code control, I will not move to GitHub - but maybe it is possible to duplicate parts of my repository there without too much effort. It also a question of how much work I should put into this, will there be any interest in this project?


For now, here is main.c - not much code:

/* * main.c - Huracan Mk III Controller * * v1.0 / 2015-11-03 / Io Engineering / Terje * *//*Copyright (c) 2015, Terje IoAll rights reserved.Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
Link to post
Share on other sites
  • 3 months later...

Finally got around to write a touch driver, it supports XPT2046 (and thus implicitly ADS7843?). I am not entirely happy with it as I had to slow down the sampling rate a lot to get consistent results, may be due to the display itself (noise?). Calibration code is by Carlos E. Vidales and routine for finding the median by Nicolas Devillard. I have modified my UI library to work with this as well, it requires a modified version of RobGs driver for Tiva C.







Link to post
Share on other sites

@@Fmilburn - the driver is for lcd screens with a XPT2046 or ADS7843 resistive touch screen controller. The touch sensors I made myself is still not working properly, too sensitive and seems to be a tad temperature dependent as well. For these I am using  Atmel AT42QT1011 & 12 touch sensor ICs, I guess I have to try different values for the sample capacitor. Since the prototype is in daily use and is working well I will do the testing when I make the next one - this because I have to completely dismantle the assembly to get access to the caps.


@@chicken - not easy to add caps to thd lcd screen pcb, since I have only tested my driver with one (chinese) display it may be a bad one?


If anybody want to try the code I can post it here - it is basically a simple drawing program, after calibration one can draw on the screen with one of a few different colors selected by pressing a button on the screen.




Touch sensors in top of picture, milled from acrylic. The wire is soldered to a small metal plate in a pocket in the clear acrylic.

Maybe I should have placed the touch sense caps on the other side of the PCB for easier access?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...