This braille printer design resulted from the observation that existing braille printers were either slow and expensive, or very expensive. These printers use relatively old designs, and contain many moving parts. Furthermore, they require a significant amount of software support from the host computer. On the basis of these observations, and a quick check of the unit prices of key components (micro-computer, stepping motors, and solenoids), it was determined that a fast braille printer with a built in micro-computer could be built for about $1000 worth of parts (1979 cost). The inclusion of the microcomputer would greatly simplify the mechanical design.
Two printers representative of the current state of the art are SAGEM's TEM/REM 8 BR and TRIFORMATION's LED-120. The SAGEM printers run at 15 characters per second, while the LED-120 runs at 120 characters per second. Both printers are implemented with "random" electronic logic, although the LED-120 uses some LSI; both use mechanical control systems. Both printers accept the ASCII character set and literally map 64 of the characters to the 64 braille signs (including space). The mapping provided is correct for the letters in Grade 1 English Braille, but departs from this for the remainder of the character set. Thus, typical computer output is difficult for even trained users to interpret, and special translation programs are required if standard Grade 1 or Grade 2 English Braille are to be produced.
The construction of this printer was financed by the School of Basic Medical Sciences and the School of Clinical Medicine of the University of Illinois at Urbana Champaign. The Physics Department supported the project with its machine shop facilities, and the microcomputer was purchased with Federal funds. Initial software for the microcomputer was written by students from Computer Science 350. Thanks for this support are due to: Frank Mabry, Bruce Sherwood, Peter Maggs, and A. B. Baskin.
The mechanical operation of the printer is quite simple. There are two stepping motors, one responsible for paper advance, and one for carriage motion. The carriage itself carries three solenoids, one for each of the three rows of bosses which make up braille text. The paper is embossed by stylus points ground on the ends of the solenoid plungers. Each stylus mates with a matching row of dies in the back bar (above the paper) which shape the bosses in the paper. While one solenoid is embossing the upper right dot of one character, another will be positioned under the center right dot of the character five print positions over, and the third will be positioned under the bottom right dot ten positions over.
The interface electronics performs the function of using the logic levels appearing on the outputs of the microcomputer to control the power delivered to the motors and solenoids. Additionally, the interface electronics includes a loudspeaker to be used for audible indication of various printer conditions. Stepping motors have multiple windings; motor rotation is accomplished by energizing the windings in the appropriate sequence. Thus, one bit is needed to control each of the windings. There are 4 windings on the large carriage motion motor, and three on the paper advance motor. Allocating one bit to the speaker and one to each of the three solenoids, a total of eleven bits are needed from the microcomputer.
The microcomputer itself is responsible for timing the transitions on each of the output bits to produce the desired mechanical motion, polling the input switches, and managing the asynchronous communications line. The input switches include an internal "carriage at left margin" switch and three internal mode switches, as well as the external page feed, line feed, and braille level select switches. Since each switch may be on or off, this is seven input bits. The microcomputer has the responsibility for translating the incoming ASCII characters to braille, and for converting the braille to motor and solenoid control sequences. Should the microcomputer discover anything wrong, it will signal this on the speaker. It may also transmit status reports on the asynchronous line.
The prototype achieves at present a speed of 13 characters per second. With patient optimization of the software delays to reduce resonance problems, a speed of 20 or 30 characters per second is likely.
ASCII (the American Standard Code for Information Interchange) is a 7 bit code for the entire alphabet in upper and lower case, the digits, 32 punctuation and accent marks, space, and 33 control characters. The 7 bits are numbered 0 to 6, with bit 0 being the least significant (rightmost) and bit 6 being the most significant (leftmost). In traditional communications terminology, the binary one and zero are called mark and space. On a serial communications line, the ASCII codes are sent least significant bit first. Asynchronous transmission involves a leading mark at the start of each character, and at least one trailing space at the end. These are called start and stop bits. On the RS-232 interface, marks are represented by negative voltages, spaces by positive voltages.
The ASCII character set is traditionally presented as a matrix, where the 3 most significant bits of the 7 bit representation label the columns and the 4 least significant bits label the rows. The printing characters occupy most of columns 2 through 7 (codes 20 to 7E). Note that space (code 20) is considered to be a printing character; the remaining codes are the control characters (codes 00 to 1F and code 7F, shaded in the diagram).
| Note that on some printers and terminals, the ^ and _ characters are presented as ↑ and ←. Sometimes, the 7F code is used as a printing character. These changes are not part of the ASCII standard. It is standard to use the ' as either an accent mark (acute), as an apostrophe or as a single quote. |
The control characters are divided into broad groups which can be distinguished by the first two letters of their CCITT names as follows:
|
|
- '4' — Use "transparent" mode, in which the low-order 6 bits of any printing character directly correspond to the 5 dots braille
- '5' — Use the Provisional Braille Code for Computer Notation.
- '6' — Use English Braille, grade 1 or 2, depending upon the setting of the internal mode switch.
The authoritative definition of braille is contained in the booklet "English Braille American Edition 1959" published by the American Printing House for the Blind, Louisville, Kentucky. Each braille character occupies a cell two dots wide by three dots high, with a nominal spacing of 0.1 inches between dots within a cell, and with cells repeated 4 per inch, and lines spaced roughly two per inch. Dots are embossed to protrude about 0.025 inches above the paper, and are about 0.07 inches in diameter. Conventionally, the dot positions are numbered from 1 to 6, starting at the upper left, down the left column and ending at the lower right, as follows:
1 | 4 |
2 | 5 |
3 | 6 |
It is common practice to refer to a braille character in print by hyphenating together the dots that are raised, so "a" is 1, "b" is 1-2, "c" is 1-4, and "z" is 1-3-5-6. The alphabet is conventionally presented as follows:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
a | b | c | d | e | f | g | h | i | j |
⠁ | ⠃ | ⠉ | ⠙ | ⠑ | ⠋ | ⠛ | ⠓ | ⠊ | ⠚ |
k | l | m | n | o | p | q | r | s | t |
⠅ | ⠇ | ⠍ | ⠝ | ⠕ | ⠏ | ⠟ | ⠗ | ⠎ | ⠞ |
u | v | w | x | y | z | ||||
⠥ | ⠧ | ⠺ | ⠭ | ⠽ | ⠵ |
Note that all alpahbetic characters use a dot from the first column and a dot in the top row. This allows them to be distinguished from each other without ambiguity when they appear out of context. In a sense, braille is an asynchronous code, and the leftmost and topmost dots in a cell serve the function of start bits. There are a total of 44 braille characters which are unambiguous out of context in this way, the remaining 19 may be disambiguated by context, and are used for punctuation and other purposes, for example (with each sign bracketed by full cells ⠿):
comma: | ⠿⠂⠿ | |
period: | ⠿⠲⠿ | |
capital sign: | ⠿⠠⠿ | (ie: ⠠y e s = Yes) |
numeral sign: | ⠿⠼⠿ | (ie: ⠼a b c = 123) |
letter sign: | ⠿⠰⠿ | (ie: ⠼e⠰e = 5e, ⠼e⠠e = 5E) |
Grade 1 English Braille is somewhat more complex than the above; English Braille, or Grade 2 Braille is much more complex. In Grade 2 Braille, most of the 63 codes have multiple meanings, allowing single symbols for 52 common words and dipthongs, such as:
ch | gh | sh | th | wh | ed | er | ou | ow | ar |
⠡ | ⠣ | ⠩ | ⠹ | ⠱ | ⠫ | ⠻ | ⠳ | ⠪ | ⠜ |
the | and | for | with | of |
⠮ | ⠯ | ⠿ | ⠾ | ⠷ |
(ie: | ⠮ | ⠇⠑⠝⠛⠹ | ⠷ | ⠮ | ⠜⠗⠪ | ⠺⠁⠎ | ⠼⠁⠑ | ⠊⠝⠡⠑⠎⠲ | |
= | the | length | of | the | arrow | was | 15 | inches. | ) |
This braille printer has four modes in which it can interpret the ASCII printing characters. The primary two modes are Grade 1 and Grade 2 Braille; in these modes, the internal microprocessor does its best to produce readable output which corresponds to these two standards. The third mode of operation is transparent mode, in which a remote computer can directly control the printer operation for applications such as music or math braille, Grade 3 Braille, or more complete adherence to the rules of Grade 2 Braille. The fourth is the Provisional Braille Code for Computer Notation, which may be particularly appropriate for transcribing computer programs.
Selection between computer notation and English braille is accomplished both by remotely sent escape sequences, and by a switch on the top of the printer. This is because the nature of the material being printed governs the grade which is appropriate. For example, if a computer program is being printed, exact spelling and punctuation are important, so computer notation should be used; on the other hand, when printing text, grade 2 will save a considerable amount of paper, and is faster to read.
Transparent mode is entered whenever ESC 4 is received and remains in effect until the next escape sequence, or or until the mode select switch on top of the printer is switched. In transparent mode, the control characters are interpreted normally, but the ASCII meanings of the printing characters are ignored. Instead, the least significant 6 bits of the ASCII character are taken to indicate the 6 positions in the cell to be printed. The bit - dot relation is:
ASCII bit number: | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
Braille dot number: | x | 1 | 2 | 3 | 4 | 5 | 6 |
Braille dot number: |
A note on overprinting: In many computer applications, two or more character are printed over each other. For example, "b" overprinted with "/" ("/b ") is commonly used as a printing character for blank. Some programming languages, such as APL, make very extensive use of overprinting. Braille presents significant difficulties for overprinting because the superposition of any two braille characters simply produces another character. This printer solves this problem by printing overprints with a vertical displacement of 2 dots. As a result, any line containing overprints will be 5 dots high (instead of the normal 3), and the space to the next line will be appropriately increased. Multiple overstrikes will be simply superimposed, and overprinting of spaces will not cause any displacement. Incidentally, this solution allows the 8 dot cell supported by the TRIFORMATION LED-120 to be reproduced.
English Braille, grade 1, is currently supported on this printer. Following is a list of rule references taken from "English Braille, American Edition", indicating which rules for grade 1 Braille are supported.
I. Punctuation Signs
All supported as given except:
II. Special Braille Composition Signs
VIII. Numbers
Text may be printed according to the Provisional Braille Code for Computer Notation (1972). Only sections 3 and 10 pertain to the printing of computer programs, and both are supported exactly (note that only those characters in section 3 which are present in the ASCII character set can be supported).
The printer-is a compact unit, measuring 12" by 24" by 5". It was designed with the needs of the blind user in mind, so it is extremely simple to operate. Loading the paper is accomplished by feeding it under a bar, positioning the holes (which run down both sides of the paper) over the appropriate pins (which protrude through the top of the printer), and lowering two levers (which automatically snap into place). The whole operation takes only a few seconds even for someone unfamiliar with the machine.
The paper on which braille has just been printed travels across the top of the printer from front to back, so that the lines which have just been printed may be read.
The number of external controls has been minimized; There are, of course, no indicators that could not be read by a blind person (there are no indicators at all!). There are four controls, all located on the top of the printer, and easily accessible:
There are a few internal control switches which need be set only at installation time or when maintenance is being done on the printer:
Variable Paper Widths:
The printer can accomodate either 9.5-inch-wide paper (that is, 8.5 inch paper with a half-inch track on either side for sprocket holes), or 12-inch wide paper. Switching between the two paper widths requires a screwdriver.
4.4 Terminal Strips
4.4.A part 3.1.2.5, main power and connections to Lid (3.4)
4.4.B part 3.1.4.2, to two 24V transformers (3.1.4.3)
4.4.C part 3.1.10.4, to carriage motor (3.2.2.2)
4.4.D part 3.1.10.5, to carriage (3.2.7), paper advance (3.2.1), current limiters (3.1.3)
4.4.E part 3.1.11.1, mounting points for small bridge rectifiers.
4.4.F part 3.1.11.2, mounting points for small bridge rectifiers.
4.4.G part 3.1.10.3, power distribution to transformers.
4.4.H part 3.1.10.2, low voltage AC from small transformers.
4.4.I part 3.1.10.2, grounding point
4.4.J part 3.2.1.5, to paper advance motor (3.2.1.2.4)
4.4.K part 3.1.10.1, anchor for ribbon cable to carriage (3.2.7)
5.2 Software
The program burned into the read-only memory of the computer is-responsible for all operation of the printer; there is no function not mediated by the computer. The software can conveniently be divided into two parts: "foreground" and “background.”
The foreground subroutines are those which are driven by interrupts: they run independently of other processes, and tend to be those which demand precise timing. For example the programs which drive the solenoids or the speaker are driven by the timer interrupt.
The background subroutines are have a lower priority, running whenever all foreground routines have (for the time being) given up their claims to execution. The background process is responsible for the translation of ASCII to Braille. It sends its output — consisting of 40-cell buffers, each representing exactly one line to be printed — to the foreground routine to be punched into the paper.
5.2.1 Background Process
5.2.2 Foreground Processes
5.2.2.1 Reading from Serial Port
5.2.2.2 Polling the switches
5.2.2.3 Carriage and solenoid motion: