Hextor Upgrades

Sonar Array - note this must use MultiProgSx5
After building two sonar arrays for Libby I updated the software on Hextor to be the same.
The board now accepts -
  • "T" then "1","2","3","4","5","6" commands to select one sensor, T1 is right and T6 is left, a byte distance value (cm) is returned;
  • "T" then "R" to select the Right side controller which returns byte values for sensors 3,2,1;
  • "T" then "L" to select the Left side controller which returns byte values for sensors 4,5,6;
  • "A1" which turns autoscanning on, "A0" which turns autoscanning off;
  • "D" which turns debug mode on, and "d" which turns debug mode off;
  • USarrayTR.bas
  • USarrayTL.bas
  • 2023-08-14
    Sonar Array - note this must use MultiProgSx5
  • circuit - added a 100k pulldown on serial to BS2sx, pin4 (D6) of bus connector.
  • AutoScan/SinglePing now on a Jumper.
  • Changed the sensor addressing.
  • Sensors now left "6", "5", "4" "3", "2", "1" right. "L", "R" replaced by original "T".
  • Left 14m2 does "T6", "T5", "T4",
  • Right 14m2 does "T3", "T2", "T1".
  • left PicAxe14m2 program USarray2L.bas
  • right PicAxe14m2 program USarray2R.bas
  • see Hxtr5-2.BSx for changes to sonar rules
  • 2023-07-12
    Eight years ago I started an Ultrasonic Array for Hextor because scanning with a servo meant big pauses while the servo moved to the desired direction. Today I finished it.
    Six HC-SR04 each with an LED which is PWMed inversly to the distance (nearer brighter).
    Two PicAxe 14M2 chips each running three sensors and LEDs, one for right and the other for left.
    The 14m2 has four PWM pins of which I use 3.
    Input to and output from the board is i9600 to suit the existing Hextor program.
    Input goes to a BC549 to invert it then to each chips hardware serin pin, serin only does t9600.
    Each chip runs the sensors in Round-Robin without any delay between sensors.
    The two chips alternate so one does a scan then the other does a scan using busy lines to avoid crosstalk between right and left sensors.
    The board accepts "R" or "L" then "1","2"."3" commands to select either Right or Left and one of the three sensors which is then read and the distance in cm is put out from the hardware serout pin (which does inverted) through steering diodes and on to the BS2sx on Hextor.
    In the photos the in/out goes to a terminal program on the PC.
    The board also has "Q" to stop and "S" to restart auto scan which means humans can see the pretty LEDs blinking. Commands interrupt the auto scanning scanning.
    When "Q" has stopped the auto scanning it waits for a "R2" command etc when the LED for the accessed sensor blinks to show the sensor was addressed then the LED is PWMed as above. The reason for blinking the LED is so when the distance is a way away and the PWM value would be too low to see you can tell the sensor has been read.
    For some reason "Q" can need a few key presses!!!!
    Note - addition of
    100k pulldown on D6,
    and Autoscan jumper.
    For testing the Array Board is plugged into a development board.

    HxtrBOS-51.bas - tellCP: rewritten, added CPtries for CP timeout and f_CPgood.
    Now the BOS program doesn't hang if a servo co-processor is bad, it does
    SERTXD("servo",#servoX," BadCP",CR) : SOUND voicepin,(40,10)
    and Hextor limps.
    The PIC 16F876 BOS chip is full and the code for the gripper/lift doesn't work properly, it works fine in a BS2 but when compiled for the '876 has erratic movement. I decided to replace the '876 with a PicAxe-28x2 which uses a PIC18F25K22, an enhanced version of the '876 with the same pinout. There are two buffer resistors on Halt and Busy between the '876 and the BS2sx and by relocating them under the pcb there is room for a board, glued in place, holding the programming connector for the PicAxe-28x2.
    The 28x2 was programmed with HxtrBOS42.bas and the gripper/lift now works properly.

    The Milinst IR circuit never worked really well, fluorescent lights caused bad IR reception. Because of this at the time Hextor was being designed I added the LCD pendant.
    The other day I realised the PicAxe08 had the same footprint as the Milinst Pic12c509 IR processor so I have now removed the Pic12c509 and associated EEPROM and fitted a PicAxe08m2 programmed to the return same codes. This now works really well.
    At the same time I added a programming connector for the PicAxe08m2 and modified the circuit so the original two pin programming header for the IR circuit can now be used to connect an external speaker to the 08m2.
    See the IR-Receiver PicAxe page.
    #picaxe 08m2
    'Hextor IR
    SETFREQ m16
      IRIN C.3,b2
      LOW C.1                   'Yellow LED On
      SERTXD (#b2,cr)           'Debug 
      b2 =b2 +1                 'so key numbers work
      SEROUT C.4,N9600_16,(b2)  'send to BSx5
      HIGH C.1                  'Yellow LED Off
      GOTO start

    So I can run Hextor from a bench PSU I added a 2.5mm pin coax power connector wired across the battery connector on the PCB.